Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число A, не превосходящее 10^{9}, и выводится произведение его цифр. Программист торопился и написал программу неправильно.

Паскаль:
var A, pr : longint;
begin
readln(A);
pr := 0;
while A >= 10 do
begin
pr := pr * (A mod 10);
A := A div 10;
end;
writeln (pr);
end.

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

Ответы

Ответ дал: EvgenVin
1

Ответ:

1. 6.

2. 1) а) pr := 0; б) pr := 1;

2) а) while A >= 10 do б) while A <> 0 do  

Объяснение:

1. 1*2*3=6

2. 1) Из-за "pr := 0" в строке "pr := pr * (A mod 10);" выражение будет всегда равняться нулю.

2) Из-за "while A >= 10 do" программа не будет воспринимать первую цифру введенного числа.

Вас заинтересует