Задача №1
В данной задаче требуется определить, имеется ли среди введённых положительных целых чисел (a) и (b) хотя бы одно чётное число. Программа, представленная в условии, имеет несколько ошибок, которые нужно исправить:
Ошибка заключается в неправильной проверке на чётность. Операция a mod 2
возвращает остаток от деления на 2. Если число чётное, остаток будет равен 0, а если нечётное — 1. В вашем коде используется присваивание a := a mod 2
, что не сохраняет первоначальные значения (a) и (b) для дальнейших проверок.
Логика проверки также некорректна. Необходимо проверять условия для обоих чисел (a) и (b) независимо друг от друга.
Исправленный код программы может выглядеть следующим образом:
var
a, b: integer;
begin
readln(a, b);
if (a mod 2 = 0) or (b mod 2 = 0) then
writeln('четное число есть')
else
writeln('четных чисел нет');
end.
Задача №2
Здесь необходимо проверить, являются ли все цифры введённого трёхзначного числа чётными. Также нужно обработать случай, когда вводится не трёхзначное число.
Решение может выглядеть следующим образом:
var
number, digit1, digit2, digit3: integer;
begin
readln(number);
// Проверка на трёхзначность числа
if (number < 100) or (number > 999) then
begin
writeln('Неверное число');
end
else
begin
// Извлечение цифр
digit1 := number div 100; // Первая цифра
digit2 := (number div 10) mod 10; // Вторая цифра
digit3 := number mod 10; // Третья цифра
// Проверка на чётность всех цифр
if (digit1 mod 2 = 0) and (digit2 mod 2 = 0) and (digit3 mod 2 = 0) then
writeln('Да')
else
writeln('Нет');
end;
end.
В этом коде сначала проверяется, является ли число трёхзначным. Если нет, выводится сообщение «Неверное число». Если число трёхзначное, из него извлекаются три цифры, и проверяется чётность каждой из них. Если все три цифры чётные, выводится «Да», иначе — «Нет».