На вход программы поступают 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");
... далее исправленная программа
}
|