На обработку поступает последовательность из четырёх целых чисел. Нужно написать программу, которая выводит на экран количество неотрицательных чисел последовательности и их сумму. Если неотрицательных чисел нет, требуется вывести на экран «NO». Известно, что вводимые числа по абсолютной величине не превышают 100. Краб был слишком увлечен поеданием песка и написал программу с ошибками. Ниже эта программа для Вашего удобства приведена на трех языках программирования.
Выполните следующие задания:
1. Напишите, что выведет эта программа при вводе последовательности -1, -2, 0, 1.
2. Приведите пример такой последовательности, содержащей хотя бы одно неотрицательное число, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
1. Запоминаем начальные значения переменных и
. Заходим в цикл, подставляем
. Так как -1 не больше 0, программа не зайдет в цикл.
Далее подставляем . Так как -2 не больше 0, программа не зайдет в цикл.
Подставляем . Так как 0 не больше 0, программа не зайдет в цикл.
Подставляем . Так как
и добавляем
к значению
.
Далее идет проверка значения переменной , поскольку у нас
, программа выведет значение
и
на экран:
2
1
2. По условию необходимо найти сумму неотрицательных чисел последовательности. Так как в программе Краба начальное значение равно 1, а складываются только положительные числа, то возьмем в качестве элементов последовательности три любых положительных числа и 0 (поскольку 0 никак не влияет на сумму, а его наличие в последовательности учитывается начальным значением переменной
), например, 0, 2, 2, 2.
3. В первую очередь необходимо заметить, что по условию задачи требуется находить неотрицательные числа, а программа, написанная Крабом, находит положительные числа. То есть ошибка находится в строчке с первым оператором “if”.
Исправим на языке C++:
Ошибочная строка: if () {
Исправленная строка: if () {
Исправим на языке Python:
Ошибочная строка: if Исправленная строка: if
Исправим на языке Pascal:
Ошибочная строка: if () then begin
Исправленная строка: if () then begin
Еще одной ошибкой в программе является начальное значение переменной . Чтобы программа выводила верный ответ, необходимо обнулить счетчик перед началом работы.
Исправим на языке C++:
Ошибочная строка: ;
Исправленная строка: ;
Исправим на языке Python:
Ошибочная строка:
Исправленная строка:
Исправим на языке Pascal:
Ошибочная строка: ;
Исправленная строка: ;