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




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

Требовалось написать программу, которая получает на вход натуральное число 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);


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