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

Для за­дан­но­го по­ло­жи­тель­но­го ве­ще­ствен­но­го числа A не­об­хо­ди­мо найти мак­си­маль­ное целое число K, при ко­то­ром вы­пол­ня­ет­ся не­ра­вен­ство

1 плюс дробь: чис­ли­тель: 1, зна­ме­на­тель: 2 конец дроби плюс дробь: чис­ли­тель: 1, зна­ме­на­тель: 3 конец дроби плюс ... плюс дробь: чис­ли­тель: 1, зна­ме­на­тель: K конец дроби мень­ше A.

(при K = 0 сумма счи­та­ет­ся рав­ной 0).

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

 

Бей­сик Python

DIM A, S AS DOUBLE

DIM K AS INTEGER

INPUT A

K = 0

S = 1

WHILE S < A

    K = K + 1

    S = S + 1.0/K

WEND

PRINT K

END

a = float(input())

k = 0

s = 1

while s < a:

    k = k + 1

    s = s + 1.0/k

print(k)

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

алг

нач

    вещ a, s

    цел k

    ввод a

    k := 0

    s := 1

    нц пока s<a

        k := k + 1

        s := s + 1.0/k

    кц

    вывод k

кон

var a, s: real;

k: integer;

begin

    read(a);

    k := 0;

    s := 1;

    while s<a do begin

        k := k + 1;

        s := s + 1.0/k;

    end;

    write(k);

end.

Си++

#include <iostream>

using namespace std;

int main(){

    double a, s;

    int k;

    cin >> a;

    k = 0;

    s = 1;

    while (s<a) {

        k = k + 1;

        s = s + 1.0/k;

    }

    cout « k « endl;

    return 0;

}

 

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

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

2.  При­ве­ди­те при­мер числа, при вводе ко­то­ро­го про­грам­ма даст вер­ный ответ.

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

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

Об­ра­ти­те вни­ма­ние: вам нужно ис­пра­вить при­ведённую про­грам­му, а не на­пи­сать свою. Вы мо­же­те толь­ко ис­прав­лять оши­боч­ные стро­ки; уда­лять стро­ки или до­бав­лять новые стро­ки нель­зя. По­ста­рай­тесь также не вне­сти новые ошиб­ки – за это оцен­ка сни­жа­ет­ся.

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

Ре­ше­ние.

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

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

2.  При­ме­ры чисел, при вводе ко­то­рых про­грам­ма вы­во­дит вер­ный ответ: 0.6, 1.4.

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

В не­ко­то­рых слу­ча­ях эти ошиб­ки ком­пен­си­ру­ют друг друга, и ответ ока­зы­ва­ет­ся пра­виль­ным. Это про­ис­хо­дит, если 0 < A ≤ 1.5.

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

1)  Не­вер­ная ини­ци­а­ли­за­ция. На­чаль­ные зна­че­ния S и K долж­ны быть оди­на­ко­вы: оба равны нулю или оба равны еди­ни­це. В при­ведённом ва­ри­ан­те вы­чис­лен­ная сумма ока­зы­ва­ет­ся на 1 боль­ше пра­виль­но­го зна­че­ния. Эту ошиб­ку можно ис­пра­вить двумя спо­со­ба­ми.

Пер­вый спо­соб ис­прав­ле­ния:

Стро­ка с ошиб­кой:

s := 1;

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

s := 0;

Вто­рой спо­соб ис­прав­ле­ния:

Стро­ка с ошиб­кой:

k := 0;

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

k := 1;

 

2)  Не­вер­ное опре­де­ле­ние от­ве­та. При­ведённая про­грам­ма на­хо­дит не мак­си­маль­ное K, при ко­то­ром вы­пол­ня­ет­ся не­ра­вен­ство, а ми­ни­маль­ное, при ко­то­ром оно не вы­пол­ня­ет­ся, то есть уве­ли­чи­ва­ет вер­ное зна­че­ние на 1. Эту ошиб­ку можно ис­пра­вить двумя спо­со­ба­ми: скор­рек­ти­ро­вать зна­че­ние при вы­во­де или ис­поль­зо­вать «пред­ва­ри­тель­ное вы­чис­ле­ние» в усло­вии цикла.

Пер­вый спо­соб ис­прав­ле­ния:

Стро­ка с ошиб­кой:

write(k);

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

write(k-1);

Вто­рой спо­соб ис­прав­ле­ния:

Стро­ка с ошиб­кой:

while s < a do begin

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

while s+1/(k+1) < a do begin

Вто­рой спо­соб ис­прав­ле­ния воз­мо­жен, толь­ко если пер­вая ошиб­ка была ис­прав­ле­на пер­вым спо­со­бом, то есть ис­поль­зо­ва­на ини­ци­а­ли­за­ция ну­ля­ми.

При ини­ци­а­ли­за­ции еди­ни­ца­ми ми­ни­маль­но воз­мож­ный ответ ока­зы­ва­ет­ся рав­ным 1, в то время как при A < 1 пра­виль­ный ответ 0. Пер­вый спо­соб ис­прав­ле­ния ра­бо­та­ет не­за­ви­си­мо от того, как ис­прав­ле­на пер­вая ошиб­ка.

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

ве­ще­ствен­ным.

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

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

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 1, 2 или 3 балла.0
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 2 или 3 балла.

Имеет место одна из сле­ду­ю­щих си­ту­а­ций.

1. Вы­пол­не­ны два пер­вых дей­ствия. При этом не­су­ще­ствен­но, на­сколь­ко пра­виль­но вы­пол­не­но тре­тье дей­ствие.

2. Най­де­ны и ис­прав­ле­ны две ошиб­ки в про­грам­ме, не более чем одна вер­ная стро­ка на­зва­на оши­боч­ной. При этом не­су­ще­ствен­но, на­сколь­ко пра­виль­но вы­пол­не­ны дей­ствия 1 и 2.

1
Не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 3 балла. Имеет место одна из сле­ду­ю­щих си­ту­а­ций.

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

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

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

2
Пра­виль­но вы­пол­не­ны все дей­ствия:

1) ука­зан вер­ный ре­зуль­тат для при­ведённого при­ме­ра вход­ных дан­ных;

2) при­ведён при­мер ввода, при­во­дя­ще­го к вер­но­му от­ве­ту;

3) ука­за­ны и ис­прав­ле­ны две ошиб­ки в про­грам­ме;

4) не ука­за­ны в ка­че­стве оши­боч­ных ни­ка­кие дру­гие стро­ки про­грам­мы.

3
Мак­си­маль­ный балл3