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