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

