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

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

Бей­сикPython

DIM M, X, DX AS INTEGER

M = 1

FOR I = 1 to 4

    INPUT X

    DX = X MOD 10

    IF DX > M MOD 10 THEN

        M = X

    ELSE

        IF DX=M MOD 10 OR X>M THEN

            M = X

        END IF

    END IF

NEXT I

PRINT M

m = 1

for i in range (4):

    x = int(input())

    dx = x % 10

    if dx > m%10:

        m = x

    else:

        if dx == m%10 or x>m:

            m = x

print(m)

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

var m, x, dx, i: integer;

begin

    m := 1;

    for i:=1 to 4 do begin

        readln(x);

        dx := x mod 10;

        if dx > m mod 10

            then m :=x

        else begin

            if (dx=m mod 10) or (x>m)

                then m :=x

        end

    end;

    write(m)

end.

алг

нач

    цел m, x, dx, i

    m := 1

    для i от 1 до 4

        ввод x

        dx := mod(x,10)

        если dx > mod(m,10)

            то m := x

        иначе

            если dx = mod(m,10) или x>m

                то m := x

            все

        все

    кц

    вывод m

кон

Си++

#include <iostream>

using namespace std;

 

int main() {

    int m, x, dx, i;

    m = 1;

    for (i=1; i<=4; ++i) {

        cin >> x;

        dx = x%10;

        if (dx > m%10)

            m = x;

        else {

            if (dx==m%10 || x>m)

                m = x;

        }

    }

    cout << m;

    return 0;

}

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

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

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

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

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

Ре­ше­ние.

1.  При вводе ука­зан­ных чисел про­грам­ма вы­ве­дет число 16.

2.  Про­грам­ма вы­во­дит вер­ный ответ A, если после ввода A не вво­дит­ся ни­ка­кое число, ко­то­рое боль­ше A. При­мер та­ко­го на­бо­ра: 15, 20, 37, 32.

3.  В про­грам­ме есть две ошиб­ки.

Пер­вая ошиб­ка: Не­вер­ная ини­ци­а­ли­за­ция. Если все числа в на­бо­ре за­кан­чи­ва­ют­ся циф­рой 0, то (в слу­чае ис­прав­ле­ния вто­рой ошиб­ки) вме­сто пра­виль­но­го от­ве­та будет вы­во­дить­ся 1.

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

m := 1;

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

m := 0;

 

Вто­рая ошиб­ка: Не­вер­ное ло­ги­че­ское усло­вие. При рас­смот­ре­нии слу­чая, когда по­след­няя цифра но­во­го числа равна те­ку­щей мак­си­маль­ной, ис­поль­зу­ет­ся не­вер­ная ло­ги­че­ская опе­ра­ция. В ре­зуль­та­те, если новое число боль­ше числа с мак­си­маль­ной по­след­ней циф­рой, будет за­фик­си­ро­ва­но новое число, даже если его по­след­няя цифра мень­ше.

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

if (dx=m mod 10) or (x>m)

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

if (dx=m mod 10) and (x>m)

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

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

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

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

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