Задание № 7485
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бейсик
DIM N AS LONG
INPUT N
max digit = 9
WHILE N > 0
digit = N MOD 10
IF digit > max digit THEN
digit = max digit
END IF
N = N \ 10
WEND
PRINT max_digit
END
Паскаль
var N: longint;
digit, max digit: integer;
begin
readln(N);
max digit := 9;
while N > 0 do
begin
digit := N mod 10;
if digit > max digit then
digit := max digit;
N := N div 10;
end;
writeln(max digit);
end.
Си
#include <stdio.h>
int main()
{
long int N;
int digit, max digit;
scant("%ld", &N);
max digit = 9;
while (N > 0)
{
digit = N % 10;
if (digit > max digit)
digit = max digit;
N = N / 10;
}
printf(M%d", max digit);
}
Алгоритмический язык
алг
нач
цел N, digit, max digit
ввод N
max digit := 9
нц пока N > 0
digit := mod(N, 10)
если digit > max digit to
digit := max digit
все
N := div(N, 10)
кц
вывод max_digit
кон
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 384.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, — приведите правильный вариант строки. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Содержание верного ответа
Решение использует запись программы на Паскале. Допускается использование программы на трёх других языках программирования.
Программа выведет число 9.
Первая ошибка. Неверная инициализация переменной в строке
max digit = 9;
Возможный вариант исправления:
max digit = 1;
Вторая ошибка. Неверное присваивание
digit := max digit
при поиске максимума.
Строка с ошибкой:
digit := max digit;
В этой строке необходимо поменять местами переменные, то есть исправить её на
max digit := digit;
Ответ: Нашли ошибку в задании? Выделите фрагмент и нажмите Ctrl + Enter.