Задание № 7539

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

Бейсик

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

Паскаль

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

Си

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

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

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

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

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

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

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

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

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


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

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

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

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

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

2. Первая ошибка. Неверная инициализация ответа (переменная product).

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

product := 0;

Исправление: product := 1;

3. Вторая ошибка. Вместо умножения в цикле производится сложение.

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

product := product + digit;

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

product : = product*digit;
Ответ:

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