№1 Требовалось написать программу, которая определяет, имеется ли среди введенных с клавиатуры положительных...

Тематика Информатика
Уровень 10 - 11 классы
программирование четные числа алгоритмы исправление ошибок условные операторы целые числа ввод данных анализ числа
0

№1

Требовалось написать программу, которая определяет, имеется ли среди введенных с клавиатуры положительных целых чисел а и Ь хотя бы одно четное. Была написана следующая программа:

•​ var a, b: integer;

•​ begin

•​ readln(a, b);

•​ a := a mod 2;

•​ if a > 0 then b := b mod 2;

•​ if b > 0 then

•​ writeln ('четных чисел нет')

•​ else

•​ writeln ('четное число есть');

•​ end.

Доработайте эту программу таким образом, чтобы задача решалась верно.

№2

С клавиатуры вводится трёхзначное число. Нужно вывести ответ «Да», если все его цифры четные, и ответ «Нет» в остальных случаях. Если введено не трёхзначное число, должно быть выведено сообщение «Неверное число».

avatar
задан 7 дней назад

2 Ответа

0

№1

Для того чтобы программа правильно определяла, есть ли среди введенных чисел хотя бы одно четное, необходимо изменить логику программы. Вот исправленный вариант:

var a, b: integer;

begin
  readln(a, b);
  
  if (a mod 2 = 0) or (b mod 2 = 0) then
    writeln('четное число есть')
  else
    writeln('четных чисел нет');
end.

В данном случае мы проверяем остаток от деления каждого числа на 2 и если хотя бы одно из чисел четное, то выводим соответствующее сообщение.

№2

Для решения этой задачи нужно проверить, что введенное число является трехзначным и все его цифры четные. Вот исправленный вариант программы:

var num, a, b, c: integer;

begin
  readln(num);
  
  if (num < 100) or (num > 999) then
    writeln('Неверное число')
  else begin
    a := num div 100;
    b := (num div 10) mod 10;
    c := num mod 10;
    
    if (a mod 2 = 0) and (b mod 2 = 0) and (c mod 2 = 0) then
      writeln('Да')
    else
      writeln('Нет');
  end;
end.

В данном случае мы сначала проверяем, что число трехзначное, затем разбиваем его на цифры и проверяем их на четность. Если все цифры четные, то выводим "Да", иначе "Нет".

avatar
ответил 7 дней назад
0

Задача №1

В данной задаче требуется определить, имеется ли среди введённых положительных целых чисел (a) и (b) хотя бы одно чётное число. Программа, представленная в условии, имеет несколько ошибок, которые нужно исправить:

  1. Ошибка заключается в неправильной проверке на чётность. Операция a mod 2 возвращает остаток от деления на 2. Если число чётное, остаток будет равен 0, а если нечётное — 1. В вашем коде используется присваивание a := a mod 2, что не сохраняет первоначальные значения (a) и (b) для дальнейших проверок.

  2. Логика проверки также некорректна. Необходимо проверять условия для обоих чисел (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.

В этом коде сначала проверяется, является ли число трёхзначным. Если нет, выводится сообщение «Неверное число». Если число трёхзначное, из него извлекаются три цифры, и проверяется чётность каждой из них. Если все три цифры чётные, выводится «Да», иначе — «Нет».

avatar
ответил 7 дней назад

Ваш ответ

Вопросы по теме