Олимпиадный тренинг

Задача . П88 - досрочный 2018


Задача

Темы:
На вход программы поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество делящихся нацело на 4 чисел в исходной последовательности и максимальное делящееся нацело на 4 число. Если делящихся нацело на 4 чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно

Паскаль Си
const n = 4;
var i, x: integer;
var maximum, count: integer;
begin
  count := 0;
  maximum := 1000;
  for i := 1 to n do begin
    read(x);
    if x mod 4 = 0 then begin
      count := count + 1;
      if x < maximum then
        maximum := x
    end
  end;
  if count > 0 then begin
    writeln(count);
    writeln(maximum)
  end
  else
    writeln('NO')
end.
#include <iostream>
using namespace std;
main()
{
const int n=4;  
int i, x, maximum=1000, count=0;
for (i = 1; i <= n; i++) {
  cin >> x;
  if (x % 4 == 0) {
   count ++;
   if (x < maximum)
     maximum = x;
   }
}
if (count > 0) 
   cout << count << endl << maximum;
else
   cout << "NO";
}

Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе последовательности: 2 8 4 3.
2. Приведите пример такой последовательности, содержащей хотя бы одно делящееся нацело на 4 число, что при её вводе приведённая программа, несмотря на ошибки, выведет правильный ответ.
3. Найдите допущенные программистом ошибки и исправьте их.
Известно, что в тексте программы можно исправить ровно две строки так, чтобы она стала работать правильно

time 500 ms
memory 32 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя