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