Задание № 7198

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится максимальная цифра этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

Бейсик

DIM N AS LONG 
INPUT N 
max digit = 0 
WHILE N >= 10
	digit = N MOD 10 
	IF digit < max digit THEN 
		max digit = digit 
	END IF 
	N = N \ 10 
WEND
PRINT max digit 
END

Алгоритмический язык

алг
нач
	цел N, digit, max digit 
	ввод N
	max digit := 0 
	нц пока N >= 10
		digit := mod(N, 10) 
		если digit < max digit to 
			max digit := digit 
		все
		N := div(N, 10)
	кц
	вывод max digit
кон

Паскаль

var N: longint;
	digit, max digit: integer; 
begin
	readln(N); 
	max digit := 0; 
	while N >= 10 do 
	begin
		digit := N mod 10; 
		if digit < max digit then 
			max digit := 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 = 0; 
	while (N >= 10)
	{
		digit = N % 10; 
		if (digit < max digit) 
			max digit = digit;
		N = N / 10;
	}
	printf("%dM, max digit);
}

Последовательно выполните следующее.

1. Напишите, что выведет эта программа при вводе числа 762.

2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку, — приведите правильный вариант строки.

Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.


Решать другие задания по теме: Поиск и ис­прав­ле­ние ошибок в программе

Показать ответ
Комментарий:

Содержание верного ответа

Решение использует запись программы на Паскале. Допускается использование программы на трёх других языках программирования

1. Программа выведет число 0.

2. Первая ошибка. Неверное условие окончания цикла. Программа не будет рассматривать старшую цифру числа.

Строка с ошибкой:

while N >= 10 do

Возможные варианты исправления:

while (N >= 1) 

или

while (N > 0)

При этом замены на

while (N > 1) или while (N >= 0) 

корректными не являются.

3. Вторая ошибка. Неверная операция сравнения при поиске максимума.

Строка с ошибкой:

IF digit < max digit THEN

В этой строке необходимо заменить знак «»

Ответ:

Нашли ошибку в задании? Выделите фрагмент и нажмите Ctrl + Enter.