Предмет: Информатика,
автор: evgeniyvin
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число A, не превосходящее , и выводится произведение его цифр. Программист торопился и написал программу неправильно.
Паскаль:
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. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
а) выпишите строку, в которой сделана ошибка;
б) укажите, как исправить ошибку: приведите правильный вариант строки.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Ответы
Автор ответа:
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" программа не будет воспринимать первую цифру введенного числа.
Похожие вопросы
Предмет: Русский язык,
автор: tugulukany
Предмет: Другие предметы,
автор: viktorvelinets1
Предмет: Английский язык,
автор: karina2501
Предмет: Математика,
автор: EvgeniaE