Даны 4 целых положительных числа. Необходимо выбрать из них те числа, которые делятся без остатка на свою последнюю цифру, подсчитать и вывести сумму таких чисел. Например, в наборе (10, 11, 15, 18) условию удовлетворяют числа 11 и 15, в ответе должно получиться 26. Если подходящих чисел в наборе нет, сумма считается равной 0.
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
| Бейсик | Python |
|---|---|
DIM S, X, DX AS INTEGER S = 0 FOR I = 1 to 4 INPUT X DX = X MOD 10 IF DX > 0 THEN IF X MOD DX > 0 THEN S = S + DX END IF END IF NEXT I PRINT S
| s = 0 for i in range (4): x = int(input()) dx = x % 10 if dx > 0: if x % dx > 0: s += dx print(s)
|
| Паскаль | Алгоритмический язык |
var s, x, dx, i: integer; begin s := 0; for i:=1 to 4 do begin readln(x); dx := x mod 10; if dx > 0 then begin if x mod dx > 0 then s :=s + dx end end; write(s) end.
| алг нач цел s, x, dx, i s := 0 для i от 1 до 4 ввод x dx := mod(x,10) если dx > 0 то если mod(x,dx) > 0 то s := s + dx все все кц вывод s кон |
| Си++ | |
#include <iostream> using namespace std;
int main() { int s, x, dx, i; s = 0; for (i=1; i<=4; ++i) { cin >> x; dx = x % 10; if (dx > 0) { if (x % dx > 0) s += dx; } cout << s; return 0; }
| |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе чисел 3, 12, 23, 37.
2. Приведите пример исходных данных, при вводе которых программа, несмотря на ошибки, выведет верный ответ
3. Найдите в программе все ошибки (известно, что их не больше двух) и исправьте их. Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
1. При вводе указанных чисел программа выведет число 10.
2. Программа выводит сумму последних цифр чисел, которые не делятся на свою последнюю цифру. Ответ будет верным, если эта сумма совпадает с суммой чисел, которые делятся на свою последнюю цифру. Пример такого набора: 5, 6, 17, 14.
3. В программе есть две ошибки.
Первая ошибка: Неверная проверка делимости. Программа выделяет числа, остаток от деления которых на последнюю цифру положителен, то есть числа, которые не делятся на свою последнюю цифру.
Строка с ошибкой:
if x mod dx > 0
Верное исправление:
if x mod dx = 0
Вторая ошибка: Неверный подсчёт суммы. Вместо числа к сумме
прибавляется его последняя цифра
Строка с ошибкой:
then s := s + dx
Верное исправление:
then s := s + x

