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

Задача . П 50


Задача

Темы:
Дано натуральное число N, не превосходящее 108. Необходимо найти и вывести число, которое получится при записи N справа налево и удалении всех единиц. Ведущие нули выводить не надо. Если в числе N нет цифр кроме единиц и нулей, необходимо вывести 0. Например, при вводе числа 1984 нужно вывести 489, а при вводе 2001 нужно вывести 2. Для решения этой задачи ученик написал такую программу:
var n, m: longint;
d: integer;
begin
  read(n);
  m := 0;
  while n>=1 do begin
    d := n mod 10;
    if d > 1 then begin
      m := 10*d + m;
    end;
    n:= (n – d) div 10;
  end;
  write(m);
end.
Последовательно выполните следующее.
1.       Напишите, что выведет эта программа при вводе числа 1984.
2.       Приведите пример числа, при вводе которого программа выдаст верный ответ. Укажите этот ответ
3.       Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки: выпишите строку, в которой сделана ошибка, и приведите правильный вариант
строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения

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

Статистика успешных решений по компиляторам
Комментарий учителя