Задания
Версия для печати и копирования в MS Word
Тип Д24 C1 № 16051
i

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

Бей­сикPython

DIM N, DIGIT, MINDIGIT AS LONG

INPUT N

MINDIGIT = N MOD 10

WHILE N > 0

    DIGIT = N MOD 10

    IF DIGIT MOD 2 = 0 THEN

        IF DIGIT < MINDIGIT THEN

            MINDIGIT = DIGIT

        END IF

    END IF

    N = N \ 10

WEND

IF MINDIGIT = 0 THEN

    PRINT "NO"

ELSE

    PRINT MINDIGIT

END IF

N = int(input())

minDigit = N % 10

while N > 0:

    digit = N % 10

    if digit % 2 == 0:

        if digit < minDigit:

            minDigit = digit

    N = N // 10

if minDigit == 0:

    print("NO")

else:

    print(minDigit)

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

var N,digit,minDigit: longint;

begin

    readln(N);

    minDigit := N mod 10;

    while N > 0 do

    begin

        digit := N mod 10;

        if digit mod 2 = 0 then

            if digit < minDigit then

                minDigit := digit;

        N := N div 10;

    end;

    if minDigit = 0 then

        writeln('NO')

    else

        writeln(minDigit);

end.

алг

нач

    цел N, digit, minDigit

    ввод N

    minDigit := mod(N,10)

    нц пока N > 0

        digit := mod(N,10)

        если mod(digit, 2) = 0 то

            если digit < minDigit то

                minDigit := digit

            все

        все

        N := div(N,10)

    кц

    если minDigit = 0 то

        вывод "NO"

    иначе

        вывод minDigit

    все

кон

Си++

#include <iostream>

using namespace std;

 

int main() {

        long N, digit, minDigit;

        cin >> N;

        minDigit = N % 10;

        while (N > 0) {

            digit = N % 10;

            if (digit % 2 == 0)

                if (digit < minDigit)

                    minDigit = digit;

            N = N / 10;

        }

        if (minDigit == 0)

            cout << "NO" << endl;

        else

            cout << minDigit << endl;

        return 0;

}

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

1.  На­пи­ши­те, что вы­ве­дет эта про­грам­ма при вводе числа 231.

2.  При­ве­ди­те при­мер та­ко­го трёхзнач­но­го числа, при вводе ко­то­ро­го при­ведённая про­грам­ма, не­смот­ря на ошиб­ки, выдаёт вер­ный ответ.

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

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

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

Из­вест­но, что в тек­сте про­грам­мы можно ис­пра­вить ровно две стро­ки так, чтобы она стала ра­бо­тать пра­виль­но.

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

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

Спрятать решение

Ре­ше­ние.

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

1.  Про­грам­ма вы­ве­дет число 1.

2.  Про­грам­ма выдаёт пра­виль­ный ответ, на­при­мер, для числа 132.

За­ме­ча­ние для про­ве­ря­ю­ще­го. Про­грам­ма ра­бо­та­ет не­пра­виль­но из-за не­вер­ной на­чаль­ной ини­ци­а­ли­за­ции и не­вер­ной про­вер­ки от­сут­ствия чётных цифр. Со­от­вет­ствен­но, про­грам­ма будет вы­да­вать вер­ный ответ, если вво­ди­мое число не со­дер­жит 0, со­дер­жит хотя бы одну чётную цифру и наи­мень­шая чётная цифра числа не боль­ше млад­шей (край­ней пра­вой) цифры числа (или про­сто стоит по­след­ней).

3.  В про­грам­ме есть две ошиб­ки. Пер­вая ошиб­ка. Не­вер­ная ини­ци­а­ли­за­ция от­ве­та (пе­ре­мен­ная minDigit).

Стро­ка с ошиб­кой:

minDigit := N mod 10;

Вер­ное ис­прав­ле­ние:

minDigit := 10;

Вме­сто 10 может быть ис­поль­зо­ва­но любое целое число, боль­шее 8.

Вто­рая ошиб­ка. Не­вер­ная про­вер­ка от­сут­ствия чётных цифр.

Стро­ка с ошиб­кой:

if minDigit = 0 then

Вер­ное ис­прав­ле­ние:

if minDigit = 10 then

Вме­сто 10 может быть дру­гое число, боль­шее 8, ко­то­рое было по­ло­же­но в minDigit при ис­прав­ле­нии пер­вой ошиб­ки, или про­вер­ка, что

minDigit > 8

Об­ра­ти­те вни­ма­ние! В за­да­че тре­бо­ва­лось вы­пол­нить че­ты­ре дей­ствия:

1)  ука­зать, что вы­ве­дет про­грам­ма при кон­крет­ном вход­ном числе;

2)  ука­зать при­мер вход­но­го числа, при ко­то­ром про­грам­ма выдаёт вер­ный ответ;

3)  ис­пра­вить первую ошиб­ку;

4)  ис­пра­вить вто­рую ошиб­ку.

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

Для дей­ствий 3) и 4) ошиб­ка счи­та­ет­ся ис­прав­лен­ной, если вы­пол­не­ны оба сле­ду­ю­щих усло­вия:

а)  пра­виль­но ука­за­на стро­ка с ошиб­кой;

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

Спрятать критерии
Критерии проверки:

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
Вы­пол­не­ны все че­ты­ре не­об­хо­ди­мых дей­ствия, и ни одна вер­ная стро­ка не ука­за­на в ка­че­стве оши­боч­ной3
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 3 балла. Имеет

место одна из сле­ду­ю­щих си­ту­а­ций.

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

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

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

2
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 2 или 3 балла. При этом имеет место один из сле­ду­ю­щих слу­ча­ев.

1. Вы­пол­не­ны два пер­вых дей­ствия. При этом не­су­ще­ствен­но, на­сколь­ко пра­виль­но вы­пол­не­но тре­тье дей­ствие.

2. Най­де­ны и ис­прав­ле­ны две ошиб­ки в про­грам­ме, не более чем одна вер­ная стро­ка на­зва­на оши­боч­ной. При этом не­су­ще­ствен­но, на­сколь­ко пра­виль­но вы­пол­не­ны дей­ствия 1 и 2.

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

1
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 1, 2 или 3 балла. 0
Мак­си­маль­ный балл3
Источники: