24_1
На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество чисел, кратных 3 в исходной последовательности и минимальное кратное 3 число. Если кратных 3 чисел нет, требуется на экран вывести «N0». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно.
Паскаль:
На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество чисел, кратных 3 в исходной последовательности и минимальное кратное 3 число. Если кратных 3 чисел нет, требуется на экран вывести «N0». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно.
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | const n = 4; var i, x: integer; var minimum, count: integer; begin count := 0; minimum := 0; for i := 1 to n do begin read(x); if x mod 3 = 0 then begin count := count + 1; if x < minimum then minimum := i end end; if count > 0 then begin writeln(count); writeln(minimum) end else writeln('NO') end. |
Последовательно выполните следующее:
- Напишите, что выведет эта программа при вводе последовательности:
- Приведите пример такой последовательности, содержащей хотя бы одно кратное 3 число, что несмотря на ошибки, программа печатает правильный ответ.
- Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
6 9 12 5
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, то есть приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Примечание: 0 — кратное 3 число.
✍ Решение:
Решение использует запись программы на Паскале. Допускается использование программы на трёх других языках программирования.
- Программа выведет два числа: 3 и 0.
- Пример последовательности, содержащей числа, кратные 3, для которой программа работает правильно: 1 0 3 5.
- В программе есть две ошибки.
В конце работы программы значение переменной minimum всегда равно 0. Соответственно, программа будет работать верно, если в последовательности есть 0. Выведенное количество кратных 3 чисел будет правильным в любом случае.
Первая ошибка: неверная инициализация minimum.
Строка с ошибкой:
minimum := 0;
Верное исправление:
minimum : = 1001;
Вместо 1001 может быть любое целое число, большее 1000, либо MAXINT. Можно использовать и число 1000, так как при выводе мы проверяем, есть ли в последовательности хотя бы одно кратное 3 число.
Вторая ошибка: неверное присваивание при вычислении минимума.
Строка с ошибкой:
minimum = i;
Верное исправление:
minimum = х;
«Строка с ошибкой:
minimum := 0;
Верное исправление:
minimum : = 1001;
Вместо 1001 может быть любое целое число, большее 1000, либо MAXINT. Можно использовать и число 1000, так как при выводе мы проверяем, есть ли в последовательности хотя бы одно кратное 3 число.»
—
Минимальное число, которое можем взять для minimum, не 1000, а 999. Это максимально возможное кратное 3 число. При наличии в последовательности этого числа 999 (единственного кратного 3 в последовательности), minimum будет 999.