СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости




Задания
Версия для печати и копирования в MS Word
Задание 24 № 15836

В натуральном числе N (0 < N < 109) необходимо подсчитать количество цифр десятичной записи, чётность которых совпадает с чётностью последней цифры числа N. Например, для N = 123 должен получиться ответ 2 (последняя цифра числа нечётная, а всего в записи числа две нечётные цифры: 1 и 3).

Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.

Ниже эта программа для Вашего удобства приведена на пяти языках программирования.

 

 

БейсикPython

DIM N, K, D AS INTEGER

INPUT N

K = 0

D = N MOD 10

WHILE N > 0

    IF N MOD 2 = D THEN

        K = K + D

    END IF

    N = N \ 10

WEND

PRINT K

END

N = int(input())

k = 0

d = N % 10

while N > 0:

    if N % 2 == d:

        k += d

    N = N // 10

print(k)

ПаскальАлгоритмический язык

var N, k, d: integer;

begin

    read(N);

    k := 0;

    d := N mod 10;

    while N > 0 do begin

        if N mod 2 = d

            then k := k + d;

        N := N div 10

    end;

    writeln(k)

end.

алг

нач

    цел N, k, d

    ввод N

     k := 0

     d := mod(N,10)

     нц пока N > 0

        если mod(N,10) = d

            то k := k + d

        все

        N := div(N,10)

     кц

     вывод k

кон

С++

#include <iostream>

using namespace std;

int main(){

     nt N, k, d;

    cin >> N;

    k = 0;

    d = N % 10;

    while (N > 0) {

        if (N % 2 == d)

        k = k + d;

    N = N / 10;

    }

    cout << k;

    return 0;

}

 

 

Последовательно выполните следующее.

1. Напишите, что выведет эта программа при вводе N = 1980.

2. Назовите минимальное трёхзначное N, при котором программа выведет верный ответ.

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

Достаточно указать ошибки и способ их исправления для одного языка программирования.

Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.

Решение.

1. При вводе N = 1980 программа выведет число 0.

2. Минимальное трёхзначное N, при котором программа выдаёт верный ответ, равно 101. Программа выдаёт верный ответ 2. При вводе числа 100 программа вместо верного ответа 2 выдаёт ответ 0.

Программа содержит две ошибки.

1) Неверное сравнение. Чётность каждой цифры числа сравнивается не с чётностью последней цифры, а с самой последней цифрой.

2) Неверный подсчёт. Вместо количества цифр считается их сумма.

 

Пример исправления для языка Паскаль:

 

Первая ошибка, способ 1:

d := N mod 10;

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

d := N mod 2;

 

Первая ошибка, способ 2:

if N mod 2 = d

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

if N mod 2 = d mod 2

 

Вторая ошибка:

then k := k + d;

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

then k := k + 1;

 

В программах на других языках ошибочные строки и их исправления аналогичны.

Незначительной опиской, не влияющей на оценку, следует считать отсутствие служебных слов и знаков после содержательной части исправления.