На обработку поступает последовательность из пяти положительных целых чисел. Нужно написать программу, которая выводит на экран разность максимального элемента последовательности и суммы четных чисел. Если четных чисел нет, требуется вывести на экран «NO». Известно, что вводимые числа по абсолютной величине не превышают 99. Марафонец замечтался о поступлении в топовый ВУЗ и написал программу с ошибками. Ниже эта программа для Вашего удобства приведена на трех языках программирования.
Выполните следующие задания:
1. Напишите, что выведет эта программа при вводе последовательности 25, 10, 2, 1, 3.
2. Приведите пример такой последовательности, содержащей хотя бы одно четное число, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
1. Запомним начальные значения и
. Подставим
. Так как 25 — нечетное число, его остаток от деления на 2 равен 1, значит,
не изменится. 25 не больше 100, значит,
также не меняется.
Подставим . Так как
— четное число, значит к значению
прибавим 10,
. 10 не больше 100, значит,
также не меняется.
Подставим . Так как
— четное число, значит к значению
прибавим 2,
. 2 не больше 100, значит,
также не меняется.
Подставим . Так как
— нечетное число,
не изменится. 1 не больше 100, значит,
также не меняется.
Подставим . Так как
— нечетное число,
не изменится. 3 не больше 100, значит,
также не меняется.
Программа выводит на экран значение , где
— последний элемент последовательности, значит, на экран будет выведено -9.
2. Так как по условию задачи нам необходимо, чтобы программа выводила разность максимального элемента последовательности и суммы четных чисел, а код, написанный Марафонцем, считает разность между последним элементом и суммой четных элементов, сделаем максимальным числом последний элемент. Тогда последовательность может иметь вид 2, 4, 1, 1, 99, в данном случае на экран будет выведено 93, что является верным ответом.
3. В первую очередь необходимо заметить, что обозначает максимальный элемент и для корректного его поиска переменная должна быть меньше любого возможного числа последовательности.
Исправим на языке C++:
Ошибочная строка: ;
Исправленная строка: ;
Исправим на языке Python:
Ошибочная строка:
Исправленная строка:
Исправим на языке Pascal:
Ошибочная строка: ;
Исправленная строка: ;
Еще одной ошибкой является вывод, так как по уловию задачи нас просят вывести разность наибольшего элемента и суммы четных чисел, а в программе Марафонца на экран выводится разность последнего элемента последовательности и суммы четных чисел.
Исправим на языке C++:
Ошибочная строка: ;
Исправленная строка: ;
Исправим на языке Python:
Ошибочная строка:
Исправленная строка:
Исправим на языке Pascal:
Ошибочная строка: ;
Исправленная строка: ;