Задача к ЕГЭ по информатике на тему «работа с последовательностями» №1

На обработку поступает последовательность из четырёх целых чисел. Нужно написать программу, которая выводит на экран количество неотрицательных чисел последовательности и их сумму. Если неотрицательных чисел нет, требуется вывести на экран «NO». Известно, что вводимые числа по абсолютной величине не превышают 100. Краб был слишком увлечен поеданием песка и написал программу с ошибками. Ниже эта программа для Вашего удобства приведена на трех языках программирования.

|---------------------------------------|-----------------------|-----------------------------| |C++                                    |Python                 |Pascal                       | |#include--<-iostream-->—————-|count-=-1—————|varcount,-sum,-x,i-: integer;| |                                       |                       |                             | |usingnamespacestd;                     |sum  = 0               |begin                        | |intmain (){                            |foriinrange (1,5) :    |  count := 1;                | |  intcount =  1,sum  = 0,x, i;          |  x = x(input ())       |  sum  := 0;                 | |  f or(i = 1;i <= 4;i + + ){            |  ifx > 0 :            |  fori := 1to4do             | |     cin > > x;                         |    count =  count + 1 |  begin                      | |                                       |                       |                             | |     if (x > 0){                        |    sum  = sum  + x    |    readln (x);              | |       count + +;                      |if count ==  0 :        |    if(x >  0)thenbegin       | |       sum  = sum  + x; }              |  print(’NO  ’)         |       count :=  count + 1;   | |     }                                 |else :                  |       sum  :=  sum +  x;     | |                                       |                       |                             | |  if (count  ==  0)                     |  print(count)         |    end;                     | |     cout < < "NO " ;                  |  print(sum )          |  end;                       | |  else                                 |                       |  if(count =  0)then          | |     cout < < count <<  endl <<  sum;  |                       |    write (’NO  ’)             | |  return0;                             |                       |  else                       | |                                       |                       |                             | |  }                                    |                       |  begin                      | |                                       |                       |    writeln (count);         | |                                       |                       |    writeln (sum );          | |                                       |                       |  end;                       | |                                       |                       |  end.                       | ----------------------------------------------------------------------------------------------|

Выполните следующие задания:

1. Напишите, что выведет эта программа при вводе последовательности -1, -2, 0, 1.

2. Приведите пример такой последовательности, содержащей хотя бы одно неотрицательное число, что, несмотря на ошибки, программа печатает правильный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

1. Запоминаем начальные значения переменных count  и sum  . Заходим в цикл, подставляем x =  − 1  . Так как -1 не больше 0, программа не зайдет в цикл.

Далее подставляем x = − 2  . Так как -2 не больше 0, программа не зайдет в цикл.

Подставляем x = 0  . Так как 0 не больше 0, программа не зайдет в цикл.

Подставляем x = 1  . Так как 1 > 0  » class=»math» width=»auto»>, увеличиваем значение переменной <img decoding= и добавляем x  к значению sum  .

Далее идет проверка значения переменной count  , поскольку у нас count = 2  , программа выведет значение count  и sum  на экран:

2

1

2. По условию необходимо найти сумму неотрицательных чисел последовательности. Так как в программе Краба начальное значение count  равно 1, а складываются только положительные числа, то возьмем в качестве элементов последовательности три любых положительных числа и 0 (поскольку 0 никак не влияет на сумму, а его наличие в последовательности учитывается начальным значением переменной count  ), например, 0, 2, 2, 2.

3. В первую очередь необходимо заметить, что по условию задачи требуется находить неотрицательные числа, а программа, написанная Крабом, находит положительные числа. То есть ошибка находится в строчке с первым оператором “if”.

 

Исправим на языке C++:

Ошибочная строка: if (x > 0  » class=»math» width=»auto»><span class=) {

Исправленная строка: if (x >=  0  » class=»math» width=»auto»><span class=) {

 

Исправим на языке Python:

Ошибочная строка: if x > 0 :  » class=»math» width=»auto»> </p>
<p class= Исправленная строка: if x >=  0 :  » class=»math» width=»auto»> </p>
<p class=  

Исправим на языке Pascal:

Ошибочная строка: if (x > 0  » class=»math» width=»auto»><span class=) then begin

Исправленная строка: if (x >=  0  » class=»math» width=»auto»><span class=) then begin

 

Еще одной ошибкой в программе является начальное значение переменной count  . Чтобы программа выводила верный ответ, необходимо обнулить счетчик перед началом работы.

 

Исправим на языке C++:

Ошибочная строка: intcount = 1,sum  =  0,x,i  ;

Исправленная строка: intcount =  0,sum  = 0,x, i  ;

 

Исправим на языке Python:

Ошибочная строка: count = 1

Исправленная строка: count  = 0

 

Исправим на языке Pascal:

Ошибочная строка: count := 1  ;

Исправленная строка: count  :=  0  ;

 

Ответ: См. решение
Оцените статью
Я решу все!