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


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

Даны целые числа A и B, 0 ≤ B ≤ A. По­сле­до­ва­тель­но вы­чис­ля­ют­ся зна­че­ния A – 1, A – 1 – 2, A – 1 – 2 – 3 и т.д. Не­об­хо­ди­мо вы­ве­сти наи­боль­шее из этих зна­че­ний, ко­то­рое мень­ше B.

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

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

 

 

Бей­сикPython

DIM A,B,S,K AS INTEGER

INPUT A, B

IF NOT (0<=B AND B<=A) THEN

    PRINT "Не­вер­ные дан­ные"

ELSE

    S = 0

    K = 0

    WHILE S > B

         K = K + 1

        S = S - K

     WEND

    PRINT S

END IF

END

a = int(input())

b = int(input())

if not 0<=b<=a:

    print("Не­вер­ные дан­ные")

else:

    s = 0

    k = 0

    while s > b:

        k = k+1

        s = s-k

    print(s)

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

var a, b, s, k: integer;

begin

    read(a,b);

    if not ((0<=b) and (b<=a)) then

        writeln('Не­вер­ные дан­ные')

    else begin

        s := 0;

        k := 0;

        while s > b do begin

            k := k+1;

            s := s-k;

        end;

        writeln(s)

    end

end.

алг

нач

    цел a, b, s, k

    ввод a, b

    если не 0<=b<=a

        то

        вывод "Не­вер­ные дан­ные"

        иначе

        s := 0

        k := 0

        нц пока s > b

            k := k+1

            s := s-k

        кц

        вывод s

    все

кон

Си++

#include <iostream>

using namespace std;

int main(){

    int a, b, s, k;

    cin >> a >> b;

    if (!(0<=b && b<=a))

        cout << "Не­вер­ные дан­ные";

    else {

        s = 0;

        k = 0;

        while (s > b) {

            k = k+1;

            s = s-k;

        }

        cout << s;

    }

    return 0;

}

 

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

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

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

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

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

 

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

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

Решение.

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

 

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

 

2. Примеры значений A и B, при вводе которых программа выведет правильный числовой ответ: 6 и 2, 10 и 3, 15 и 5.

Комментарий для экспертов. Поскольку программа при корректных исходных данных всегда выводит 0, необходимо подобрать такие данные, при которых ответ равен 0. Для этого можно выбрать произвольное целое K и взять A=1+2+…+K и любое B из интервала 0 < B ≤ K. Ученик не обязан приводить это рассуждение, ему достаточно указать правильную пару A и B.

 

3. Программа содержит две ошибки: неверное начальное значение S и неверное условие цикла.

 

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

 

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

s := 0;

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

s := a;

 

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

while s > b do begin

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

while s >= b do begin

 

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

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