Вводятся три цифры, требуется составить из них наибольшее возможное четное число. - Pascal ABC
Формулировка задачи:
Вводятся три цифры. Требуется составить из них наибольшее возможное четное число.
Входные данные
Вводятся три цифры, разделенные пробелом. Гарантируется, что хотя бы одна из них отлична от нуля и хотя бы одна цифра четная.
Выходные данные
Вывести одно трехзначное число (без пробелов). Число не может начинаться с нуля.
Источник: InformaticsРешение задачи: «Вводятся три цифры, требуется составить из них наибольшее возможное четное число.»
textual
Листинг программы
var a : array[1..3] of integer; i, indMinEven, k : integer; begin repeat WriteLn('Введите три цифры, не менее одной чётной и хотя одну - не равную нулю'); ReadLn(a[1],a[2],a[3]); until ((a[1]<>0) or (a[2]<>0) or (a[3]<>0)) and not (odd(a[1]) and odd(a[2]) and odd(a[3])) and (a[1] in [0..9]) and (a[2] in [0..9]) and (a[3] in [0..9]); indMinEven := -1; for i:=1 to 3 do if not odd(a[i]) then begin if indMinEven<0 then indMinEven := i else if a[i]<a[indMinEven] then indMinEven := i end; if indMinEven <> 3 then begin k := a[indMinEven]; a[indMinEven] := a[3]; a[3] := k end; if a[1]<a[2] then WriteLn(a[2],a[1],a[3]) else WriteLn(a[1],a[2],a[3]); end.
Объяснение кода листинга программы
- Создается переменная
a
типаarray[1..3] of integer
, которая будет хранить введенные пользователем цифры. - Задаются три переменные
i
,indMinEven
иk
типаinteger
. Переменнаяi
будет использоваться для повторного запроса ввода цифр, если они не удовлетворяют условиям, а переменныеindMinEven
иk
будут использоваться для хранения минимального четного числа и его текущего значения соответственно. - В цикле
repeat-until
происходит повторный запрос ввода цифр, пока не будут введены три цифры, удовлетворяющие условиям (не менее одной четной и хотя бы одна не равная нулю) и не являются нечетными. - Если условие выполняется, то переменная
indMinEven
присваивается индексу первой введенной четной цифры, а переменнаяk
присваивается значению этой цифры. Затем значение переменнойa[3]
заменяется на значение переменнойk
. - Если после выполнения предыдущего шага переменная
indMinEven
все еще равна 3, это означает, что введены три нечетные цифры, и цикл прерывается. - Если после выполнения предыдущего шага переменная
indMinEven
не равна 3, то выводится наибольшее четное число, которое состоит из цифрa[indMinEven]
,a[2]
иa[1]
. - Конец программы.