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

Тре­бо­ва­лось на­пи­сать про­грам­му, ко­то­рая по­лу­ча­ет на вход на­ту­раль­ное число N, не пре­вос­хо­дя­щее 109, и вы­во­дит число, ко­то­рое по­лу­ча­ет­ся из N после уда­ле­ния всех еди­ниц; по­ря­док осталь­ных цифр при этом не ме­ня­ет­ся. На­при­мер, число 19520125 долж­но быть пре­об­ра­зо­ва­но в число 952025. Число, в ко­то­ром все цифры  — еди­ни­цы и нули, долж­но быть пре­об­ра­зо­ва­но в 0. Не­зна­ча­щие нули в стар­ших раз­ря­дах по­лу­чен­но­го числа пе­ча­тать не нужно.

Про­грам­мист то­ро­пил­ся и на­пи­сал про­грам­му не­пра­виль­но.

Бей­сикПас­каль

DIM N, R, T AS LONG

DIM d AS INTEGER

INPUT N

R = 0

T = 1

WHILE N > 0

d = N MOD 10

IF d <> 1 THEN

R = R + d * T

T = T + 1

END IF

N = N \ 10

WEND

PRINT T

END

var N, R, T: longint;

d: integer;

begin

readln(N);

R:=0;

T:=1;

while N>0 do begin

d := N mod 10;

if d<>1 then begin

R := R + d*T;

T := T+1

end;

N := N div 10;

end;

writeln(T);

end.

Си++Ал­го­рит­ми­че­ский

#include <iostream>

using namespace std;

int main()

{

long int N, R, T;

int d;

cin >> N;

R = 0;

T = 1;

while (N > 0) {

d = N % 10;

if (d != 1) {

R = R + d*T;

T = T+1;

}

N = N / 10;

}

cout << T;

}

алг

нач

цел N, R, T, d

ввод N

R := 0

T := 1

нц пока N > 0

d := mod(N, 10)

если d <> 1 то

R := R + d*T

T := T+1

все

N := div(N, 10)

кц

вывод T

кон

Python

N = int(input())

R=0

T=1

while N > 0:

    d = N % 10

    if d != 1:

        R = R + d*T

        T = T+1

    N //= 10

print(T)

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

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

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

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

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

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

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

Ре­ше­ние.

Эле­мен­ты от­ве­та:

1.Про­грам­ма вы­ве­дет число 3. (При­ме­ча­ние Про­грам­ма вы­во­дит число, ко­то­рое на 1 боль­ше

ко­ли­че­ства со­дер­жа­щих­ся в ис­ход­ном числе цифр, не рав­ных 1).

2.  Пер­вая ошиб­ка. Не­вер­ное из­ме­не­ние пе­ре­мен­ной T.

Стро­ка в про­грам­ме на Пас­ка­ле:

T := T+1

Пра­виль­ная стро­ка:

T := T*10

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

writeln(T);

Пра­виль­ная стро­ка:

writeln(R);

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

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
Пра­виль­но вы­пол­не­ны оба пунк­та за­да­ния. Ис­прав­ле­ны две ошиб­ки, при этом ни­ка­кие дру­гие стро­ки про­грам­мы не от­ме­че­ны как не­вер­ные. Про­грам­ма после ис­прав­ле­ний для всех на­ту­раль­ных чисел N, не пре­вос­хо­дя­щих 109, верно по­лу­ча­ет и вы­во­дит пре­об­ра­зо­ван­ное число.

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

3
1. Пра­виль­но вы­пол­не­ны два дей­ствия из трёх (ис­прав­ле­ны обе ошиб­ки, но в пер­вом пунк­те за­да­ния не при­ведён ответ или вы­пол­нен пункт 1 и верно ис­прав­ле­на толь­ко одна ошиб­ка). Вер­ное ука­за­ние на ошиб­ку при её не­вер­ном ис­прав­ле­нии при этом не за­счи­ты­ва­ет­ся.

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

2
Пра­виль­но вы­пол­не­но толь­ко одно дей­ствие из трёх, то есть либо толь­ко вы­пол­нен пункт 1, либо он не вы­пол­нен или вы­пол­нен не­вер­но и верно ис­прав­ле­на толь­ко одна ошиб­ка про­грам­мы путём её яв­но­го ука­за­ния и ис­прав­ле­ния или в новом тек­сте про­грам­мы.1
Все пунк­ты за­да­ния вы­пол­не­ны не­вер­но (ответ на пункт 1 не при­ведён или при­ведён не­вер­но, ошиб­ки не най­де­ны или най­де­ны, но не ис­прав­ле­ны, или ис­прав­ле­ны не­вер­но).0
Мак­си­маль­ный балл3

Аналоги к заданию № 6968: 7000 Все