Дано натуральное число N, не превосходящее 108. Необходимо найти и вывести число, которое получится при записи N справа налево и удалении всех девяток. Ведущие нули выводить не надо. Если в числе N нет цифр кроме девяток и нуле...

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