Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, которое получается из N после удаления всех пятёрок, порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 192012. Число, в котором все цифры – пятёрки и нули, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно.
Программист торопился и написал программу неправильно.
Бейсик | Паскаль |
---|---|
DIM N, R, T AS LONG DIM d AS INTEGER INPUT N R = 0 T = 1 WHILE N > 0 d = N MOD 10 IF d <> 5 THEN R = R + d * T T = T + 1 END IF N = N \ 10 WEND PRINT T END | var N, R, T: longint; d: integer; begin readln(N); R:=0; T:=1; while N>0 do begin d := N mod 10; if d<>5 then begin R := R + d*T; T := T+1 end; N := N div 10; end; writeln(T); end. |
Си++ | Алгоритмический |
#include <iostream> using namespace std; int main() { long int N, R, T; int d; cin >> N; R = 0; T = 1; while (N > 0) { d = N % 10; if (d != 5) { R = R + d*T; T = T+1; } N = N / 10; } cout << T; } | алг нач цел N, R, T, d ввод N R := 0 T := 1 нц пока N > 0 d := mod(N, 10) если d <> 5 то R := R + d*T T := T+1 все N := div(N, 10) кц вывод T кон |
Python | |
n = int(input()) R=0 T=1 while n > 0: d = n % 10 if d != 5: R += d*T T += 1 n //= 10; print(T) |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 354.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) Выпишите строку, в которой сделана ошибка.
2) Укажите, как исправить ошибку — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.