Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число A, не превосходящее 109, и выводится произведение его цифр. Программист торопился и написал программу неправильно. Паскаль:var A, pr : longint;beginreadln(A);pr := 0;while A >= 10 dobeginpr := pr * (A mod 10);A := A div 10;end;writeln (pr);end.Последовательно выполните следующее.1. Напишите, что выведет эта программа при вводе числа 123.2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:а) выпишите строку, в которой сделана ошибка;б) укажите, как исправить ошибку: приведите правильный вариант строки.Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Ошибки в программе: а) pr := 0; - ошибка в том, что переменная pr инициализируется значением 0, что приведет к тому, что произведение цифр будет всегда равно 0. б) исправление: pr := 1; // присвоить начальное значение 1, а не 0
Правильный вариант исправления ошибки:
var A, pr: longint; begin readln(A); pr := 1; while A >= 1 do begin pr := pr * (A mod 10); A := A div 10; end; writeln(pr); end.
Эта программа при вводе числа 123 выведет 0.
Ошибки в программе:
а) pr := 0; - ошибка в том, что переменная pr инициализируется значением 0, что приведет к тому, что произведение цифр будет всегда равно 0.
б) исправление: pr := 1; // присвоить начальное значение 1, а не 0
Правильный вариант исправления ошибки:
varA, pr: longint;
begin
readln(A);
pr := 1;
while A >= 1 do
begin
pr := pr * (A mod 10);
A := A div 10;
end;
writeln(pr);
end.