Задание № 7194

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

Бейсик

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

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

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

Паскаль

var N: longint;
	digit, min digit: integer; 
	begin
	readln(N); min digit := 10; 
	while N > 0 do 
	begin
		digit := N div 10; 
		if digit < min digit then 
			min digit := digit;
		N := N div 10; 
	end;
writeln(digit); 
end.

Си

#include <stdio.h> 
int main()
{
	long int N; 
	int digit, min digit; 
	scant("%ld", &N); 
	min digit = 10; 
	while (N > 0)
	{
		digit = N / 10; 
		if (digit < min digit) 
			min digit = digit;
		N = N / 10;
	}
	printf("%d", digit);
}

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

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

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

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


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

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

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

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

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

Первая ошибка. В строке внутри цикла

digit := N div 10;

вместо операции div должна использоваться операция mod.

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

digit := N mod 10;

Вторая ошибка. Неверный вывод значения digit вместо min digit в строке

writeln(digit);

Возможное исправление

writeln(min digit);
Ответ:

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