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

0 голосов
152 просмотров

Дано натуральное число 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. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде. Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.


Информатика (202 баллов) | 152 просмотров
0

Но ведь условие протеворечит само себе н должно быть меньше 108 , а1984 уже больше 108

0

наверное как всегда афтар не читает то что пишет и думает что мы телепаты. Как по мне подразумевалось 10^8

0

Все претензии к нашему учителю, как он написал - так и пишу

0

А кто должен задавать учителю вопросы если что-то не ясно? Ты или мы?))) Тогда приписывай скайп учителя, чтоб мы задавали вопросы, когда решаем твою домашку.

Дан 1 ответ
0 голосов
Правильный ответ

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.

(53.1k баллов)