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


Задания
Версия для печати и копирования в 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(){

    int 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;

 

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

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