Приветствую помогите с данной задачей. Условие - Составьте программу которая учитывает...

0 голосов
39 просмотров

Приветствую помогите с данной задачей.
Условие - Составьте программу которая учитывает все варианты, все цифры в четырехзначном числе,положении возрастания затем в порядке убывания и выводит в качестве результата сумму 3 чисел(Начальное число, число с цифрами по возрастанию, число с цифрами по убыванию).Цифры в числе не должны быть равны, если же они равны,то "WriteLn('Ошибка');"

Данные:
Входные 2576.
Выходные 12756.

Начало я уже написал, главная проблема с условиями.

Program Test;
Var a,a1,a2,a3,a4,b,c:integer;
Begin
ReadLn(a);
a1:=a div 1000;
a2:=a div 100 mod 10;
a3:=a div 10 mod 10;
a4:= a mod 10;
if (a1=a2) or (a2=a3) or (a2=a4) or (a1=a3) or (a1=a4) or (a3=a4) then WriteLn('Ошибка')
else ...

Буду благодарен всем представленным решениям и советам.
Спасибо


Информатика (86 баллов) | 39 просмотров
0

однако эти языки далеки от паскаля

0

Эх, вот в чем проблема новичка( в данном случае меня).Я щас только учусь программированию и знаю только Паскаль и (%2) С#

0

Что же, жду ответа, благодарю

0

Я написал программу, но у меня получается 12795 и если сложить 2576 + 2567 + 7652 = 12795, действительно получается именно так

0

Тогда я знаю 0.2%, тогда боюсь представить, что мне еще предстоит познать

0

Именно так. Но учитывая объемы языка, 2 % - это невероятно много

0

Наверное мы не допоняли друг друга. 2% - это то что я знаю в C# , а 98" - это то, что мне предстоит еще выучить.

0

В таком случае, вы должны знать его очень хорошо, наверно даже лучше меня

0

2% от всего

0

Вы либо знаете C# намного больше большинства, либо вы себя переоцениваете) Либо вы имели ввиду 2% от основ?

Дан 1 ответ
0 голосов
Решение на VB.NET:
        Const SIZE As Integer = 4
        Dim a, sum As Integer
        a = Console.ReadLine()
        sum = a
        Dim n(SIZE) As Integer
        For i = 1 To SIZE
            n(i) = a Mod 10
            a \= 10
        Next
        For i = 1 To SIZE
            For j = i + 1 To SIZE
                If n(i) > n(j) Then
                    Dim t As Integer
                    t = n(i)
                    n(i) = n(j)
                    n(j) = t
                ElseIf n(i) = n(j) Then
                    Console.WriteLine("Ошибка")
                    Exit Sub
                End If
            Next
        Next
        For i = 1 To SIZE
            sum += (n(i) + n(SIZE - i + 1)) * 10 ^ (i - 1)
        Next
        Console.WriteLine(sum)
        Console.ReadKey()
image
(2.7k баллов)
0

хорошо

0

она не нужна, ее стоит удалить

0

25-я строчка к слову - это опечатка

0

24 - при сортировке я заодно проверяю, если числа равны, и, как вы сказали, нужно завершать программу с ошибкой, что я и делаю

0

12 - цикл, в котором мы отбираем в массив каждую цифру

0

4 - Объявляем константу (неизменная переменная) со значением 4 - это длина нашего числа. Вы можете ее не использовать, а везде, где используется SIZE писать 4

0

понял*

0

нял

0

вернее 4 12 и 24

0

Хорошо,благодарю