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

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

 

Бей­сикPython

DIM N, DIGIT, SUM AS LONG

INPUT N

SUM = 0

WHILE N > 10

    DIGIT = N MOD 10

    IF DIGIT MOD 3 = 0 THEN

        SUM = SUM + DIGIT

    END IF

    N = N \ 10

WEND

IF SUM >0 THEN

    PRINT SUM

ELSE

    PRINT "NO"

END IF

N = int(input())

sum = 0

while N > 10:

    digit = N % 10

    if digit % 3 == 0:

        sum = sum + digit

    N = N // 10

if sum > 0:

    print(sum)

else:

    print("NO")

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

var N, digit, sum: longint;

begin

    readln(N);

    sum := 0;

    while N > 10 do

    begin

        digit := N mod 10;

        if digit mod 3 = 0 then

            sum := sum + digit;

        N := N div 10;

    end;

    if sum > 0 then

        writeln(sum)

    else

        writeln('NO')

end.

алг

нач

    цел N, digit, sum

    ввод N

    sum := 0

    нц пока N > 10

        digit := mod(N,10)

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

            sum := sum + digit

        все

        N := div(N,10)

    кц

    если sum > 0 то

        вывод sum

    иначе

        вывод "NO"

    все

кон

Си++

#include <iostream>

using namespace std;

int main()

{

    int N, digit, sum;

    cin >> N;

    sum = 0;

    while (N > 10)

    {

        digit = N % 10;

        if (digit % 3 == 0)

            sum = sum + digit;

        N = N / 10;

    }

    if (sum > 0)

        cout « sum « endl;

    else

        cout << "NO";

    return 0;

}

 

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

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

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

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

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

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

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

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

Ре­ше­ние.

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

1.  Про­грам­ма вы­ве­дет «N0».

2.  Про­грам­ма выдаёт пра­виль­ный ответ, на­при­мер, для числа 600 или 561. Про­грам­ма ра­бо­та­ет не­пра­виль­но из-за не­вер­но­го усло­вия цикла и не­пра­виль­ной про­вер­ки на не­крат­ность 3. Со­от­вет­ствен­но, про­грам­ма будет ра­бо­тать верно, если сумма всех цифр, крат­ных 3, без учёта цифры стар­ше­го раз­ря­да, равна сумме всех цифр числа, не крат­ных 3.

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

Пер­вая ошиб­ка. Не­вер­ное усло­вие цикла Стро­ка с ошиб­кой:

while N > 10 do Вер­ное ис­прав­ле­ние:

while N > 0 do или

while N >= 1 do

Вто­рая ошиб­ка. Не­пра­виль­ная про­вер­ка на не­крат­ность трём. Стро­ка с ошиб­кой:

if digit mod 3=0 then Вер­ное ис­прав­ле­ние:

if digit mod 3 <> 0 then

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

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

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

оши­боч­ной.

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

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

на­зва­на оши­боч­ной.

2
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 2 или 3 балла.

При этом имеет место один из сле­ду­ю­щих слу­ча­ев.

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

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

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

оши­боч­ной.

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

Аналоги к заданию № 9375: 10487 10514 Все