Вводятся три цифры, требуется составить из них наибольшее возможное четное число. - 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.

Объяснение кода листинга программы

  1. Создается переменная a типа array[1..3] of integer, которая будет хранить введенные пользователем цифры.
  2. Задаются три переменные i, indMinEven и k типа integer. Переменная i будет использоваться для повторного запроса ввода цифр, если они не удовлетворяют условиям, а переменные indMinEven и k будут использоваться для хранения минимального четного числа и его текущего значения соответственно.
  3. В цикле repeat-until происходит повторный запрос ввода цифр, пока не будут введены три цифры, удовлетворяющие условиям (не менее одной четной и хотя бы одна не равная нулю) и не являются нечетными.
  4. Если условие выполняется, то переменная indMinEven присваивается индексу первой введенной четной цифры, а переменная k присваивается значению этой цифры. Затем значение переменной a[3] заменяется на значение переменной k.
  5. Если после выполнения предыдущего шага переменная indMinEven все еще равна 3, это означает, что введены три нечетные цифры, и цикл прерывается.
  6. Если после выполнения предыдущего шага переменная indMinEven не равна 3, то выводится наибольшее четное число, которое состоит из цифр a[indMinEven], a[2] и a[1].
  7. Конец программы.

Оцени полезность:

6   голосов , оценка 4.5 из 5
Похожие ответы