На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Rust
  
> ЕГЭ по информатике 2020, часть 2, № 24, Исправление ошибок в программе
    ЕГЭ по информатике 2020, вариант Москва
    Часть 2, № 24
    Исправление ошибок в программе
    Задание взято с сайта
    http://kotolis.ru/realegeinf_2020
    Решение на сайте неправильное.
    Более точно, авторы решают другую задачу, не ту, чьё условие они приводят.
    user posted image

    Условие.
    На обработку поступает последовательность из четырёх неотрицательных чисел. Нужно написать программу, которая выводит на экран количество четных чисел, и их сумму. Если таких чисел нет, требуется вывести на экран «NO». Программист написал программу неправильно.
    Последовательно выполните следующее.
    1. Напишите, что выведет эта программа при вводе набора 70 93 50 19 .
    2. Приведите пример такого набора чисел, что, несмотря на ошибки, программа печатает правильный ответ.
    3. Найдите в программе все ошибки (их может быть не больше двух). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

    Решение.
    Программа на Паскале:
    ExpandedWrap disabled
      var maximum, i ,x, count: integer;
      begin
          count:= 0; sum:= 0;
          for i:= 1 to 4 do
              begin
                  read (x);
                  if x mod 2 = 0 then
                      begin
                          count:= count + 1;
                          sum:= x + i;
                      end;
              end;
          if sum > 0 then
              begin
                 writeln(count);
                 writeln (sum);
              end
          else writeln('NO')
      end.


    В программе не объявлена переменная sum, поэтому она ничего печатать не будет.
    Будем считать, что это ошибка не программиста, а т.н. составителей.

    1. В программе обрабатываются только чётные числа. В переменной count будет накоплено количество чётных чисел в наборе, т.е. count = 2 (70 и 50). В переменной sum находится сумма последнего чётного числа и его номера, т.е. sum = 50 + 3 = 53.
    2 53
    2. Набор, в котором все числа нечётные, например, 1 3 5 7. Т.к. sum = 0, то программа печатает ‘NO’.
    3. sum:= x + i; - неправильно
    sum:= x + sum; - правильно

    if sum > 0 then - неправильно
    if count > 0 then - правильно
    Сообщение отредактировано: swf -
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0150 ]   [ 16 queries used ]   [ Generated: 29.07.21, 00:45 GMT ]