Предмет: Информатика,
автор: egor222777
Приветствую помогите с данной задачей.
Условие - Составьте программу которая учитывает все варианты, все цифры в четырехзначном числе,положении возрастания затем в порядке убывания и выводит в качестве результата сумму 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 ...
Буду благодарен всем представленным решениям и советам.
Спасибо
Archimedes04:
однако эти языки далеки от паскаля
Эх, вот в чем проблема новичка( в данном случае меня).Я щас только учусь программированию и знаю только Паскаль и (%2) С#
Вы либо знаете C# намного больше большинства, либо вы себя переоцениваете) Либо вы имели ввиду 2% от основ?
2% от всего
В таком случае, вы должны знать его очень хорошо, наверно даже лучше меня
Наверное мы не допоняли друг друга. 2% - это то что я знаю в C# , а 98" - это то, что мне предстоит еще выучить.
Именно так. Но учитывая объемы языка, 2 % - это невероятно много
Тогда я знаю 0.2%, тогда боюсь представить, что мне еще предстоит познать
Я написал программу, но у меня получается 12795 и если сложить 2576 + 2567 + 7652 = 12795, действительно получается именно так
Что же, жду ответа, благодарю
Ответы
Автор ответа:
1
Решение на 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()
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()
Приложения:
вернее 4 12 и 24
хорошо
нял
понял*
4 - Объявляем константу (неизменная переменная) со значением 4 - это длина нашего числа. Вы можете ее не использовать, а везде, где используется SIZE писать 4
12 - цикл, в котором мы отбираем в массив каждую цифру
24 - при сортировке я заодно проверяю, если числа равны, и, как вы сказали, нужно завершать программу с ошибкой, что я и делаю
25-я строчка к слову - это опечатка
она не нужна, ее стоит удалить
Хорошо,благодарю
Похожие вопросы
Предмет: История,
автор: realself1sh
Предмет: Українська література,
автор: SAndriutsa
Предмет: Қазақ тiлi,
автор: aigerimanavarbek
Предмет: Алгебра,
автор: gajnullinaelwira
Предмет: Алгебра,
автор: Василиска9