Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
| Бэйсик | Паскаль |
|---|---|
DIM N AS LONG INPUT N max_digit = 10 WHILE N >= 10 digit = N MOD 10 IF max_digit < digit THEN max_digit = digit END IF N = N \ 10 WEND PRINT max_digit END
| var N: longint; digit, max_digit: integer; begin readln(N); max_digit := 10; while N >= 10 do begin digit := N mod 10; if max_digit < digit then max_digit := digit; N := N div 10; end; writeln(max_digit); end.
|
| Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main () { long int N; int digit, max_digit; cin >> N; max digit = 10; while (N >= 10) { digit = N % 10; if (max_digit < digit) max_digit = digit; N = N / 10; } cout « max_digit « endl; }
| алг нач цел N, digit, max_digit ввод N max_digit := 10 нц пока N >= 10 digit := mod(N, 10) если max_digit < digit то max_digit := digit все N := div(N, 10) кц вывод max_digit кон |
| Python | |
n = int(input()) max_digit = 10 while n >= 10: digit = n % 10 if max_digit < digit: max_digit = digit n //= 10 print(max_digit) | |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 528.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Решение использует запись программы на Паскале. Допускается использование программы на трёх других языках.
1. Программа выведет число 10.
2. Первая ошибка. Неверное инициализация переменной max_digit:
max_digit:=10;
Исправленная строка:
max_digit:=0;
Вторая ошибка. Неверное условие выхода из цикла:
while N >= 10 do
Исправленная строка:
while N > 0 do
Указания по оцениванию.
Обратите внимание! В задаче требовалось выполнить три действия: указать, что выведет программа при конкретном входном значении, и исправить две ошибки.
Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия (ниже указано, какое действие считается выполненным).
1. Верно указано, что именно выведет программа при указанных в условии входных данных.
2. Указана и верно исправлена ошибка инициализации (не обязательно с упоминанием этого термина).
3. Указана и верно исправлена ошибка вывода переменной digit вместо product.

