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




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

Факториалом натурального числа n (обозначается n!) называется произведение всех натуральных чисел от 1 до n. Например, 4! = 1 · 2 · 3 · 4 = 24.

Дано целое положительное число A. Необходимо найти минимальное натуральное K, для которого K! ≥ A.

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

Ниже эта программа для Вашего удобства приведена на пяти языках программирования.

 

 

БейсикPython

DIM A, K, F AS INTEGER

INPUT A

K = 0

F = 1

WHILE F <= A

    K = K + 1

    F = F * K

WEND

PRINT K

END

a = int(input())

k = 0

f = 1

while f <= a:

    k += 1

    f *= k

print(k)

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

var a, k, f: integer;

begin

    read(a);

    k := 0;

    f := 1;

    while f <= a do begin

        k := k + 1;

        f := f * k

    end;

    writeln(k)

end.

алг

нач

    цел a, k, f

    ввод a

    k := 0

    f := 1

    нц пока f <= a

        k := k + 1

        f := f * k

    кц

    вывод k

кон

Си++

#include

using namespace std;

int main(){

    int a, k, f;

    cin >> a;

    k = 0;

    f = 1;

    while (f <= a) {

        ++k;

        f *= k;

    }

    cout << k;

    return 0;

}

 

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

1. Напишите, что выведет эта программа при вводе A = 6.

2. Назовите минимальное A, большее 10, при котором программа выведет неверный ответ.

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

Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

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

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

Решение.

1. При вводе A = 6 программа выведет число 4.

2. Минимальное A>10, при котором программа выдаёт неверный ответ, равно 24. Программа выдаёт неверные ответы, если введённое число оказывается точным факториалом. Минимальный точный факториал, больший 10, равен 24.

3. Программа содержит две ошибки.

1) Неверная инициализация. Начальное значение переменной K должно быть равно 1. Это значение не влияет на работу программы при A>1, но при A = 1 оно оказывается существенным. Если исправить вторую ошибку, сохранив нулевое начальное значение K, то программа выдаст ответ 0 вместо правильного 1.

2) Неверное условие цикла.

 

Пример исправления для языка Паскаль:

 

Первая ошибка:

k := 0;

Исправленная строка:

k := 1;

 

Вторая ошибка:

while f <= a do begin

Исправленная строка:

while f < a do begin

 

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

Незначительной опиской, не влияющей на оценку, следует считать отсутствие служебных слов и знаков после содержательной части исправления

Источник: СтатГрад: Тре­ни­ро­воч­ная ра­бо­та 28.11.2017 ИН10203