Задание № 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.