Задание 24
ТЕМА 24
«Исправление ошибок в программе, записанной на языке программирования»
Пример 1
(демонстрационный вариант ЕГЭ 2020 г)
На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран минимальную чётную цифру этого числа. Если в числе нет чётных цифр, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Последовательно выполните следующее.
- Напишите, что выведет эта программа при вводе числа 231.
- Приведите пример такого трёхзначного числа, при вводе которого приведённая программа, несмотря на ошибки, выдаёт верный ответ.
- Найдите допущенные программистом ошибки и исправьте их. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно. Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Примерное решение
(для языка Паскаль)
- Программа выведет число 1.
- Программа выдаёт правильный ответ, например, для числа 132.
Программа работает неправильно из-за неверной начальной инициализации и неверной проверки отсутствия чётных цифр. Соответственно, программа будет выдавать верный ответ, если вводимое число не содержит 0, содержит хотя бы одну чётную цифру и наименьшая чётная цифра числа не больше младшей (крайней правой) цифры числа (или просто стоит последней).
3. В программе есть две ошибки.
Первая ошибка: неверная инициализация ответа (переменная minDigit).
Строка с ошибкой:
minDigit := N mod 10;
Верное исправление:
minDigit := 10;
Вместо 10 может быть использовано любое целое число, большее 8.
Вторая ошибка: неверная проверка отсутствия чётных цифр.
Строка с ошибкой:
if minDigit = 0 then
Верное исправление:
if minDigit = 10 then
Вместо 10 может быть другое число, большее 8, которое было положено в minDigit при исправлении первой ошибки, или проверка, что minDigit > 8
Комментарии, отзывы и предложения Вы можете направить на e-mail, указанный в контактах или оставить в гостевой книге, указав тему вопроса: перейти в гостевую книгу