ВПР СПО по информатике для завершивших освоение программы
16. Исправление ошибок в программе. Задание 16 (с самопроверкой)
Задание
0 Б.
На обработку поступает последовательность из 6 неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество чётных чисел и минимальное среди чётных. Если таких чисел нет, требуется вывести на экран \(NO\).
 
Известно, что вводимые числа не превышают \(1000000\). Программист написал программу неправильно.
 
Ниже написанная им программа для удобства приведена на четырёх языках программирования.
 
 Алгоритмический язык Pascal
 алг
нач
\(~\)цел \(n = 6\), \(x\), \(i\), odd_cnt \(= 0\), min_val \(= 0\), found \(= 0\)

\(~\)нц для \(i\) от \(1\) до \(n\)
\(~~\)ввод \(x\)
\(~~\)если mod\((x, 2) <> 0\) то
\(~~~\)odd_cnt :\(=\) odd_cnt \(+ 1\)
\(~~\)иначе
\(~~~~\)если found \(= 0\) или \(x <\) min_val то
\(~~~~~\)min_val :\(= x\)
\(~~~~~\)found :\(= 1\)
\(~~~~\)все
\(~~\)все
\(~\)кц

\(~\)если found \(= 0\) то
\(~~\)вывод "NO"
\(~\)иначе
\(~~~\) вывод odd_cnt, " ", min_val
\(~\)все
кон
 
 
 
 
 
 
 
 program EvenCountAndMin;
var
\(~\)\(n\), \(i\), \(x\), odd_cnt, min_val, found: integer;
begin
\(~\)\(n\) :\(= 6\);
\(~\)odd_cnt :\(= 0\);
\(~\)min_val :\(= 0\);
\(~\)found :\(= 0\);

\(~\)for \(i\) :\(= 1\) to n do
\(~\)begin
\(~~~\)read(\(x\));
\(~~~\) if \(x\) mod \(2\) <> \(0\) then
\(~~~~\)odd_cnt :\(=\) odd_cnt \(+ 1\)
\(~~~\) else
\(~~~~\)begin
\(~~~\)if (found \(= 0\)) or (\(x <\) min_val) then
\(~~~\) begin
\(~~~~~\) min_val :\(= x\);
\(~~~~~\)found :\(= 1\);
\(~~~~\) end;
\(~~~\)end;
\(~\)end;

\(~\) if found \(= 0\) then
\(~~~\)writeln('NO')
\(~\)else
\(~~~\)writeln(odd_cnt, ' ', min_val);
end.
 C\(++\) Python
#include <iostream>
using namespace std;

int main() {
\(~~\) int \(n = 6\);
\(~~\) int \(x\), odd_cnt \(= 0\), min_val \(= 0\);
\(~~\) bool found \(=\) false;

\(~~\) for (int \(i = 0\); \(i < n\); \(++i\)) {
\(~~~\) cin \(>> x\);
\(~~~\) if (\(x\) \(\%\) \(2\) !\(= 0\)) {
odd_cnt\(++\);
\(~~~\) } else {
\(~~~~\) if (!found || \(x <\) min_val) {
\(~~~~~\)min_val \(= x\);
\(~~~~~\) found \(=\) true;
}
\(~~~\)}
\(~~\) }

\(~~\) if (!found) {
\(~~~\)cout << "NO" << endl;
\(~~\) } else {
\(~~~~~\)cout << odd_cnt << " " << min_val << endl;
\(~~\) }
\(~~\)return \(0\);
}
\(n = 6\)
odd_cnt \(= 0\)
min_val \(= 0\)
found \(=\) False

for _ in range(n):
\(~~~~\)\(x =\) int(input())
\(~~~~\) if \(x\) \(\%\) \(2\) !\(= 0\):
\(~~~~~~~~\)odd_cnt \(+= 1\)
\(~~~~\)else:
\(~~~~~~~~\) if not found or \(x <\) min_val:
\(~~~~~~~~~~~\) min_val \(= x\)
\(~~~~~~~~~~~\)found \(=\) True

if not found:
\(~~~~\) print("NO")
else:

\(~~~~\) print(odd_cnt, min_val)
 
 
 
 
 
 
 
 
 
 
Последовательно выполни следующее.
 

1. Напиши, что выведет эта программа при вводе \(1, 3, 5, 7, 9, 11\).

2. Приведи пример входных данных, при вводе которых программа выведет верный ответ.

3. Найди в программе все ошибки (известно, что их не больше двух) и исправь их. Для каждой ошибки выпиши строку, в которой она допущена, и приведи эту же строку в исправленном виде.

Достаточно указать ошибки и способ их исправления для одного языка программирования.

Обрати внимание: нужно исправить приведённую программу, а не написать свою. Ты можешь только заменять ошибочные строки, но не удалять строки или добавлять новые. Заменять следует только ошибочные строки.

Вы должны авторизоваться, чтобы ответить на задание. Пожалуйста, войдите в свой профиль на сайте или зарегистрируйтесь.