Дано натуральное число N, не превосходящее 108. Необходимо найти и вывести число, которое получится при записи N справа налево и удалении всех девяток. Ведущие нули выводить не надо. Если в числе N нет цифр кроме девяток и нулей, необходимо вывести 0. Например, при вводе числа 1984 нужно вывести 481, а при вводе 2009 нужно вывести 2. Для решения этой задачи ученик написал такую программу:
| Бейсик | Паскаль |
|---|---|
DIM N, M AS LONG DIM D AS INTEGER INPUT N M = 0 WHILE N>1 D = N MOD 10 IF D<9 THEN M = M + D END IF N = N \ 10 WEND PRINT M END | 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. |
| Си++ | Алгоритмический |
#include <iostream> using namespace std; int main(){ long int n, m; int d; cin >> n; m = 0; while (n>1) { d = n%10; if (d<9) { m = m + d; } n = n / 10; } cout << m; } | алг нач цел n, m цел d ввод n m := 0 нц пока n>1 d := mod(n,10) если d<9 то m := m + d все n := div(n,10) кц вывод m кон |
| Python | |
n = int(input()) m = 0 while n > 1: d = n % 10 if d < 9: m = m + d n //= 10 print(m) | |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 1984.
2. Приведите пример числа, при вводе которого программа выдаст верный ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
PDF-версии: 