Олимпиадный тренинг

Задача . 20184


Задача

Темы:
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа.   Программист торопился и написал программу неправильно:  
Паскаль Си
var N, product: longint;
    digit: integer; 
begin
(*)
(1)  readln(N);
(2)  product := N mod 10;
(3)  while N >= 10 do begin
(4)    digit := N mod 10;
(5)    product := product * digit;
(6)    N := N div 10
(7)  end;
(8)  writeln ( product )
end.
#include<stdio.h>
main(){
  int N, product;
  int digit;
(*)
(1)  scanf("%d",&N);
(2)  product = N % 10;
(3)  while (N >= 10) {
(4)    digit = N % 10;
(5)    product = product * digit;
(6)    N = N / 10;
(7)  }
(8)  printf("%d", product );
}
Последовательно выполните следующее:
1.       Определите, что выведет программа при вводе числа 532 (выполните задание устно).
2.       Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
а)      выпишите строку, в которой сделана ошибка;
б)      укажите, как надо исправить ошибку -  приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, имеющую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}


time 1000 ms
memory 32 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
Free Pascal3
С++ Mingw-w6419
Комментарий учителя