Задание № 7566

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

Бейсик

DIM N AS LONG
DIM product AS LONG
INPUT N
product = 1
WHILE N > 0
    digit = N MOD 10
    digit = product * digit
    N = N \ 10
WEND
PRINT digit
END

Паскаль

var N, product: longint;
    digit: integer;
begin
    readln(N)
;
    product := 1;
    while N > 0 do
    begin
        digit := N mod 10;
        digit := product * digit;
        N := N div 10;
    end;
    writeln(digit);
end.

Си

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

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

алг
нач
    цел N, digit, product
    ввод N
    product := 1
    нц пока N > 0
        digit := mod(N, 10)
        digit := product * digit
        N := div(N, 10)
    кц
    вывод digit
кон

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

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

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

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку, — приведите правильный вариант строки.

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


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

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

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

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

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

2. Первая ошибка. Неверное вычисление произведения в цикле.

Строка с ошибкой:

digit := product * digit;

Исправление:

product := product * digit;

3. Вторая ошибка. Программа выводит значение переменной digit, а не product. Строка с ошибкой:

writeln(digit);

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

writeln(product);
Ответ:

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