РУҚА
24

Шешімі: Исправление программы поиска цифры

ЕГЭ · Информатика · Тапсырма 24 · Алгоритмдер және орындаушылар
ЖоғарыФИПИ89F10EТолық шешім≈ 15 минутТалдау 8 қадам
Условие

На обработку поступает натуральное число, не превышающее $10^9$. Нужно написать программу, которая выводит на экран максимальную цифру числа, кратную 5. Если в числе нет цифр, кратных 5, требуется вывести «NO». Программист написал программу неправильно. Программа приведена на языках Бейсик, Python, алгоритмическом языке, Паскаль и Си.

Напоминание: 0 делится на любое натуральное число.

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

Тапсырманы ашып, өзіңіз шешіңіз
Дальше ответЕгер әлі шешіп жатсаңыз – кеңестерден бастаңыз: олар жауапқа жетелейді, бірақ оны ашпайды.
К подсказкам

Шешімін қадамдап көрсету

8 қадам
1

При вводе числа 132 программа сначала выполняет присваивание maxDigit = N % 10, поэтому maxDigit получает значение 2.

2

Затем программа последовательно рассматривает цифры 2, 3 и 1. Ни одна из них не делится на 5, поэтому значение maxDigit не изменяется.

3

После завершения цикла программа проверяет maxDigit == 0. Значение равно 2, поэтому выполняется ветвь else и программа выводит 2.

4

Следовательно, при вводе 132 программа выводит 2, хотя правильным результатом было бы NO.

5

Пример трёхзначного числа, при котором исходная программа выдаёт правильный ответ: 150. Цифры, кратные 5, — 5 и 0, максимальная из них равна 5. Исходная программа также выводит 5.

6

Первая ошибка находится в строке инициализации. Значение последней цифры может быть не кратно 5 и оказаться больше всех цифр, кратных 5. Поэтому начальное значение должно быть меньше любой возможной цифры.

$$maxDigit = -1$$
7

Вторая ошибка находится в условии проверки отсутствия подходящих цифр. Значение 0 является допустимым ответом, так как 0 делится на 5. Поэтому признаком отсутствия найденной цифры должно быть значение -1.

$$if maxDigit == -1:$$

Например, после этих исправлений для числа 150 программа найдёт цифру 5, а для числа 120 — цифру 5. Для числа 132 значение maxDigit останется равным -1, поэтому будет выведено NO.

Жауап

1) При вводе 132 программа выводит 2. 2) Например, число 150. 3) В Python исправить maxDigit = N % 10 на maxDigit = -1 и if maxDigit == 0: на if maxDigit == -1:.

Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.

Где здесь ошибаются

Считать, что программа при вводе 132 выводит NO, не проследив начальное присваивание maxDigit = N % 10.

Исправить только проверку maxDigit == 0, но оставить неверную инициализацию последней цифрой числа.

Использовать 0 как признак отсутствия цифры, хотя 0 сама является допустимой цифрой, кратной 5.

Привести полностью новую программу вместо исправления только ошибочных строк.

Закрепить приёмВ теме «Алгоритмдер және орындаушылар» ещё 431 тапсырма — жауабымен және дәл осындай талдауымен.
Жаттығу

Тапсырманы қалай шешу керек 24 ЕГЭ, информатика

Бұл есептің талдауы келесіге бөлінген: 8 шагов: видно, откуда берётся каждое число и где теряется балл. Жауап есептеулердің жанында келтірілген, олардың орнына емес.

Задача из темы «Алгоритмдер және орындаушылар»: в ней 432 задачи, и у каждой есть такой же разбор. Тіркеу қажет емес.