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




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

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

 

БэйсикПаскаль

DIM N AS LONG

DIM product AS LONG

INPUT N

product = N mod 10

WHILE N >= 10

    digit = N MOD 10

    product = product*digit

    N = N \ 10

WEND

PRINT product

END

var N, product: longint;

    digit: integer;

begin

    readln(N);

    product := N mod 10;

    while N >= 10 do

    begin

        digit := N mod 10;

        product := product*digit;

        N := N div 10;

    end;

    writeln(product);

end.

Си++Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

    long int N, product;

    int digit;

    cin >> N;

    product = N % 10;

    while (N >= 10)

    {

        digit = N % 10;

        product = product*digit;

        N = N / 10;

    }

    cout << product;

}

алг

нач

    цел N, digit, product

    ввод N

    product := mod(N, 10)

    нц пока N >= 10

        digit := mod(N, 10)

        product := product*digit

        N := div(N, 10)

    кц

    вывод product

кон

Python

n = int(input())

product = n % 10

while n >= 10:

    digit = n % 10

    product = product*digit

    n //= 10

print(product)

 

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

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

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

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

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

 

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

Решение.

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

 

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

 

2. Первая ошибка. Неверная инициализация ответа (переменная product). В результате младшая цифра учитывается два раза. Строка с ошибкой: product := N mod 10. Исправление: product := 1;

 

3. Вторая ошибка. Неверное условие окончания цикла. Программа не будет рассматривать старшую цифру числа. Строка с ошибкой: «while N >= 10». Возможные варианты исправления: «while N >= 1» или «while N > 0». При этом замены на «while N > 1» или «while N >= 0» корректными не являются. В качестве ещё одного возможного варианта исправления этой ошибки является вывод значения «product*N» а не просто «product»(так как после окончания цикла в переменной N останется только одна цифра)

 

Указания по оцениванию.

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

Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия (ниже указано, какое действие считается выполненным).

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

2. Указана и верно исправлена ошибка инициализации (не обязательно с упоминанием этого термина).

3. Указана и верно исправлена ошибка в условии окончания цикла.


Аналоги к заданию № 5468: 5596 9659 Все

Источник: ЕГЭ по ин­фор­ма­ти­ке 30.05.2013. Ос­нов­ная волна. Сибирь. Ва­ри­ант 1.