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


Задания
Версия для печати и копирования в 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