Демоверсия егэ по информатике 2019. Задание 24, вторая часть

Задание 24. Преобразование логических выражений: демонстрационный вариант егэ информатика 2019


*** КАНАЛ ЮТЬЮБ ***
 
ЕГЭ по информатике -> ЕГЭ 2019 -> ЕГЭ 2019
 

Разбор 24 задания демоверсии егэ по информатике 2019:

На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран минимальную чётную цифру этого числа. Если в числе нет чётных цифр, требуется на экран вывести «NO». Программист написал программу неправильно:

Паскаль:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var
  N, digit, minDigit: longint;
begin
  readln(N);
  minDigit := N mod 10;
  while N > 0 do
  begin
    digit := N mod 10;
    if digit mod 2 = 0 then
      if digit < minDigit then
        minDigit := digit;
    N := N div 10;
  end;
  if minDigit = 0 then
    writeln('NO')
  else
    writeln(minDigit)
end.

Последовательно выполните следующее:

  1. Напишите, что выведет эта программа при вводе числа 231.
  2. Приведите пример такого трёхзначного числа, при вводе которого приведённая программа, несмотря на ошибки, выдаёт верный ответ.
  3. Найдите допущенные программистом ошибки и исправьте их. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки:
  4. 1) выпишите строку, в которой сделана ошибка;
    2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.

    Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно.

✍ Решение:
 

  1. Программа выведет число 1.
  2. Программа выдаёт правильный ответ, например, для числа 132.
  3. Программа работает неправильно из-за неверной начальной инициализации и неверной проверки отсутствия чётных цифр. Соответственно, программа будет выдавать верный ответ, если вводимое число не содержит 0, содержит хотя бы одну чётную цифру и наименьшая чётная цифра числа не больше младшей (крайней правой) цифры числа (или просто стоит последней).
  4. В программе есть две ошибки.
  5. Первая ошибка: неверная инициализация ответа (переменная minDigit).
    Строка с ошибкой:

    minDigit := N mod 10;

    Верное исправление:

    minDigit := 10;
    Вместо 10 может быть использовано любое целое число, большее 8.

    Вторая ошибка: неверная проверка отсутствия чётных цифр.
    Строка с ошибкой:

    if minDigit = 0 then

    Верное исправление:

    if minDigit = 10 then
    Вместо 10 может быть другое число, большее 8, которое было положено в minDigit при исправлении первой ошибки, или проверка, что minDigit > 8