Требовалось написать программу, при выполнении которой с клавиатуры считывается положительное целое число N, не превосходящее 109, и определяется сумма цифр этого числа. Программист торопился и написал программу неправильно.
| Бейсик | Python |
|---|---|
DIM N AS LONG INPUT N sum = 1 WHILE N > 0 D = N MOD 10 N = N \ 10 sum = sum + 1 WEND PRINT sum END
| N = int(input()) sum = 1 while N > 0: d = N%10 N = N // 10 sum = sum + 1 print(sum)
|
| Паскаль | Алгоритмический язык |
var N: longint; sum, d: integer; begin readln(N); sum := 1; while N > 0 do begin d := N mod 10; N := N div 10; sum := sum + 1; end; writeln(sum); end.
| алг нач цел N, d, sum ввод N sum := 1 нц пока N > 0 d := mod(N, 10) N := div(N, 10) sum := sum + 1 кц вывод sum кон |
| Си++ | |
#include int main() { long int N; int sum, d; cin >> N; sum = 1; while (N > 0) { d = N%10; N = N / 10; sum = sum + 1; } cout « sum « endl; return 0; } | |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 256.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт правильный результат.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Решение использует запись программы на Паскале. Допускается использование программы на четырех других языках.
1. Программа выдаст 4.
2. Пример числа, для которого программа выдаст верный результат: 130.
Заметим, что программа выдает верный результат для любого трёхзначного числа, у которого сумма цифр на 1 больше их количества, то есть равна 4.
3. Возможные варианты исправления для языка Паскаль:
1) исправление инициализации суммы:
Было: sum := 1
Нужно: sum := 0
2) исправление приращения суммы
Было: sum := sum +1
Нужно: sum := sum +d

