Дано целое положительное число N ≥ 10. Необходимо найти наибольшую сумму двух соседних цифр в десятичной записи N. Например, для N = 2018 нужно получить ответ 9, а для N = 2010 ответ 2. Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
| Бейсик | Python |
|---|---|
DIM N,M,D1,D2,S AS INTEGER INPUT N M = 0 WHILE N >= 10 D1 = N MOD 10 D2 = N MOD 100 S = D1 + D2 IF S > M THEN M = S END IF N = N \ 100 WEND PRINT M
| n = int(input()) m = 0 while n >= 10: d1 = n % 10 d2 = n % 100 s = d1 + d2 if s > m: m = s n //= 100 print(m)
|
| Паскаль | Алгоритмический язык |
var n,m,d1,d2,s: integer; begin readln(n); m := 0; while n >= 10 do begin d1 := n mod 10; d2 := n mod 100; s := d1 + d2; if s > m then m := s; n := n div 100 end; writeln(m); end.
| алг нач цел n,m,d1,d2,s ввод n m := 0 нц пока n >= 10 d1 := mod(n,10) d2 := mod(n,100) s := d1 + d2 если s > m то m := s все n := div(n,100) кц вывод m кон |
| С++ | |
#include <iostream> using namespace std; int main(){ int n,m,d1,d2,s; cin >> n; m = 0; while (n >= 10) { d1 = n % 10; d2 = n % 100; s = d1 + d2; if (s > m) m = s; n /= 100; } cout << m; return 0; }
| |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе N = 2018.
2. Приведите пример числа N, при котором программа выведет верный ответ. Укажите этот ответ.
3. Найдите в программе все ошибки (известно, что их не больше двух) и исправьте их. Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
1. При вводе N = 2018 программа выведет число 26.
2. Примеры чисел, при вводе которых программа выводит верные ответы: 402 (ответ 4), 804 (ответ 8), 910 (ответ 10).
3. Программа содержит две ошибки.
1) Неверно определяется вторая с конца цифра. Вместо цифры вычисляется двузначное число, которым заканчивается запись N.
2) Неверный переход к следующим цифрам. Цифры отбрасываются по две, а не по одной, в результате некоторые пары соседних цифр не обрабатываются.
Пример исправления для языка Паскаль:
Первая ошибка:
d2 := n mod 100;
Исправленная строка:
d2 := n mod 100 div 10;
Возможны и другие способы вычисления, например:
d2 := n div 10 mod 10;
Правильным считается любое исправление, которое приводит к верному вычислению нужной цифры.
Вторая ошибка:
n := n div 100
Исправленная строка:
n := n div 10
В программах на других языках ошибочные строки и их исправления аналогичны.
Незначительной опиской, не влияющей на оценку, следует считать отсутствие знаков после содержательной части исправления (например, точки с запятой в C++).

