|
На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество не делящихся нацело на 3 чисел в исходной последовательности и минимальное не делящееся нацело на 3 число. Если не делящихся нацело на 3 чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже написанная им программа для Вашего удобства приведена на пяти языках программирования.
|
Бейсик
|
Python
|
|
CONST n = 4
count = 0
minimum = 1
FOR I = 1 TO n
INPUT x
IF x mod 3 <> 0 THEN
count = count + 1
IF x < minimum THEN
minimum = I
END IF
END IF
NEXT I
IF count > 0 THEN
PRINT count
PRINT minimum
ELSE
PRINT "NO"
END IF
|
n = 4
count = 0
minimum = 1
for i in range(1, n+1):
x = int(input())
if x % 3 != 0:
count += 1
if x < minimum:
minimum = i
if count > 0:
print(count)
print(minimum)
else:
print("NO")
|
|
Алгоритмический язык
|
Паскаль
|
|
алг
нач
цел
n = 4
цел
i, x
цел
minimum, count
count := 0
minimum := 1
нц
для
i
от
1
до
n
ввод
x
если
mod(x, 3) <> 0
то
count := count + 1
если
x < minimum
то
minimum := i
все
все
кц
если
count > 0
то
вывод
count,
нс
вывод
minimum
иначе
вывод
"NO"
все
кон
|
const n = 4;
var i, x: integer;
var
minimum, count
: integer;
begin
count
:= 0;
minimum
:= 1;
for i := 1 to n do
begin
read(x);
if x mod 3
<>
0 then
begin
count := count + 1;
if x <
minimum
then
minimum
:=
i
end
end;
if count > 0 then
begin
writeln(count);
writeln(
minimum
)
end
else
writeln('NO')
end.
|
|
С++
|
|
#include <iostream>
using namespace std;
int main() {
const int n = 4;
int x, minimum, count;
count = 0;
minimum = 1;
for (int i = 1; i <= n; i++) {
cin >> x;
if (x % 3 != 0) {
count++;
if (x < minimum)
minimum = i;
}
}
if (count > 0) {
cout << count << endl;
cout << minimum << endl;
}
else
cout << "NO" << endl;
return
0;
}
|
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе последовательности:
2 19 24 3.
2. Приведите пример такой последовательности, содержащей хотя бы одно не делящееся нацело на 3 число, что при её вводе приведённая программа, несмотря на ошибки, выведет правильный ответ.
3. Найдите допущенные программистом ошибки и исправьте их. Исправление ошибки должно затрагивать только строку, в которой находится ошибка. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Известно, что в тексте программы нужно исправить не более двух строк так, чтобы она стала работать правильно.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание на то, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Примечание
. 0 делится на любое натуральное число.
|