Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число A, не превосходящее 109, и выводится произведение его цифр. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
| Бейсик | Паскаль |
|---|---|
DIM A AS LONG DIM pr AS LONG INPUT A pr = 0 WHILE A >= 10 pr = pr * (A MOD 10) A = A \ 10 WEND PRINT pr END
| 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.
|
| Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main() { long int A,pr; cin >> A; pr = 0; while (A >= 10) { pr = pr * (A%10); A = A /10; } cout « pr « endl; } | алг нач цел A, pr ввод A pr := 0 нц пока A >= 10 pr := pr * mod (A, 10) A := div(A, 10) кц вывод pr кон |
| Python | |
A = int(input()) pr = 0 while A >= 10: pr = pr * (A % 10) A //= 10 print(pr) | |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 123.
2. Найдите все ошибки в этой программе (их может быть одна или несколько).
Для каждой ошибки:
а) выпишите строку, в которой сделана ошибка;
б) укажите, как исправить ошибку: приведите правильный вариант строки.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Решение использует запись программы на Паскале. Допускается использование программы на трёх других языках.
1. Программа выведет число 0.
2. Первая ошибка. Неверная инициализация переменной pr.
Строка с ошибкой:
pr := 0;
Возможный вариант исправления:
pr := 1;
3. Вторая ошибка. Неверное условие продолжения цикла.
Строка с ошибкой:
while A >= 10 do
Возможные варианты исправления:
while (A >= 1) do
или
while (A > 0) do
При этом замены на while (A > 1) do или while (A >= 0) do корректными не являются.

