Шешімі: Іздеу максимальной цифры
На обработку поступает натуральное число, не превышающее $10^9$. Нужно написать программу, которая выводит на экран максимальную цифру числа, кратную 5. Если цифр, кратных 5, в числе нет, требуется вывести «NO». Программист написал программу неправильно. Программа приведена на нескольких языках программирования. Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Достаточно указать ошибки и способы их исправления для одного языка программирования. Напоминание: 0 делится на любое натуральное число.
Последовательно выполните следующие действия: найдите результат работы программы при вводе числа 108; приведите пример трёхзначного числа, при вводе которого программа выдаёт верный ответ; найдите все ошибки в программе, для каждой ошибки выпишите ошибочную строку и приведите правильный вариант этой строки.
Шешім по шагам
6 қадамПри вводе числа 108 программа последовательно рассматривает цифры 8, 0 и 1. Цифра 8 не делится на 5, цифра 0 делится на 5, но условие `digit > maxDigit` при `maxDigit = 0` ложно. Поэтому значение `maxDigit` остаётся равным 0. В конце проверяется условие `maxDigit > 0`, которое также ложно.
Следовательно, исходная программа при вводе 108 выводит `NO`, хотя правильным ответом является 0.
Пример трёхзначного числа, при котором программа выдаёт верный ответ: 125. В числе есть цифра 5, и программа выводит 5 — максимальную цифру, кратную 5.
Первая ошибка состоит в начальной инициализации максимальной цифры. Значение 0 не позволяет отличить наличие цифры 0 от отсутствия подходящих цифр.
$$maxDigit = -1$$Вторая ошибка состоит в проверке результата. Если максимальная подходящая цифра равна 0, нужно вывести 0, поэтому следует проверять неравенство `>= 0`.
$$if\ maxDigit \ge 0:$$Для языка Python исправления имеют вид: `maxDigit = -1` вместо `maxDigit = 0`; `if maxDigit >= 0:` вместо `if maxDigit > 0:`.
1) При вводе 108 программа выводит `NO`, хотя правильный ответ — 0. 2) Например, 125: программа выводит 5, что верно. 3) В Python исправить `maxDigit = 0` на `maxDigit = -1` и `if maxDigit > 0:` на `if maxDigit >= 0:`.
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Считать, что цифра 0 не делится на 5.
Назвать только ошибку в условии вывода и не исправить начальное значение maxDigit.
Привести пример числа, для которого программа работает неправильно, вместо примера с верным результатом.
Изменить несколько строк одновременно или предложить другую программу вместо исправления исходной.