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

Задача . 20190


Задача

Темы:
На вход программы поступают 4 неотрицательных целых числа, не превышающие 1000, среди которых могут быть одинаковые. Нужно написать программу, которая выводит количество чисел, кратных 3, и максимальное из этих чисел. Если среди входных данных нет чисел, кратных трёх, программы должна вывести слово 'NO'. Для решения этой задачи ученик написал такую программу:
 
Паскаль Си
const n = 4;
var i, x: integer;
var maximum, count: integer;
begin
(*)
(1)  count := 0;
(2)  maximum := 999;
(3)  for i:=1 to n do begin
(4)    read( x );
(5)    if x mod 3 = 0 then begin
(6)      count := count + 1;
(7)      if x < maximum then
(8)         maximum := x;
(9)    end;
(10)  end;
(11)  if count > 0 then begin
(12)    writeln(count);
(13)    writeln(maximum);
(14)  end
(15)  else
(16)    writeln('NO');                 
end.
#include<stdio.h>
main(){
  conts int n=4;  
  int i, x;
  int maximum, count;
(*)
(1)  count = 0; 
(2)  maximum=999;
(3)  for(i=1;i<=n;i++){
(4)   scanf("%d",&x);
(5)   if (x % 3 == 0) {
(6)    count = count +1;
(7)    if (x < maximum)
(8)       maximum = x;
(9)    } 
(10)  }
(11) if (count>0) {
(12)    print("%d\n",count);
(13)    print("%d\n", maximum);
(14) } 
(15) else
(16)    printf("NO");
}
 

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

В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль Си
...
begin
(*)  writeln('123');

... далее исправленная программа

end.
#include<stdio.h>
main(){
...
(*)  printf("123\n");
... далее исправленная программа
}
 


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

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