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




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

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

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

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

 

 

БейсикPython

DIM N, K, D AS INTEGER

INPUT N

K = 0

D = N MOD 2

WHILE N > 1

    IF N MOD 10 = D THEN

        K = K + 1

    END IF

    N = N \ 10

WEND

PRINT K

END

N = int(input())

k = 0

d = N % 2

while N > 1:

    if N % 10 == d:

        k += 1

    N = N // 10

print(k)

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

var N, k, d: integer;

begin

    read(N);

    k := 0;

    d := N mod 2;

    while N > 1 do begin

        if N mod 10 = d

            then k := k + 1;

        N := N div 10

    end;

    writeln(k)

end.

алг

нач

    цел N, k, d

    ввод N

     k := 0

     d := mod(N,2)

     нц пока N > 1

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

            то k := k + 1

        все

        N := div(N,10)

     кц

     вывод k

кон

С++

#include <iostream>

using namespace std;

int main(){

     nt N, k, d;

    cin >> N;

    k = 0;

    d = N % 2;

    while (N > 1) {

        if (N % 10 == d)

        ++k;

    N = N / 10;

    }

    cout << k;

    return 0;

}

 

 

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

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

2. Назовите минимальное N, большее 100, при котором программа выведет верный ответ.

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

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

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

Решение.

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

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

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

1) Неверное условие цикла. Если старшая цифра числа равна 1, то эта цифра не будет проверяться и подсчитываться.

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

 

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

 

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

while N > 1 do begin

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

while N > 0 do begin

 

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

while N > 1 do begin

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

while N >= 1 do begin

 

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

if N mod 10 = d

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

if N mod 2 = d

 

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

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