Вход   →
Тест к заданию 24

Поиск и исправление ошибок в программе

20 минут
на тест из 5 вопросов
Вернуться назад
Осталось
20 минут
Тест к заданию 24

Поиск и исправление ошибок в программе

  1.    Дано целое по­ло­жи­тель­ное число N, не пре­вос­хо­дя­щее 1000. Не­об­хо­ди­мо опре­де­лить, яв­ля­ет­ся ли это число сте­пе­нью числа 3. То есть тре­бу­ет­ся опре­де­лить, су­ще­ству­ет ли такое целое число K, что 3K = N, и вы­ве­сти это число либо со­об­ще­ние, что та­ко­го числа не су­ще­ству­ет.

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

     Бей­сик  Пас­каль

    DIM N, K AS INTEGER

      INPUT N

    K = 0

    WHILE K MOD 3 = 0

        K = K + 1

        N = N \ 3

    WEND

    IF N > 0 THEN

        PRINT K

    ELSE

        PRINT "Не су­ще­ству­ет"

    END IF

    END

    var n, k: integer;

    begin

        read(n);

        k := 0;

        while k mod 3 = 0 do begin

            k := k + 1;

            n := n div 3;

        end;

        if n > 0 then

            writeln(k)

        else

            writeln('Не су­ще­ству­ет')

    end.

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

    #include <iostream>

    using namespace std;

    int main(){

        int n, k;

      cin >> n;

        k = 0;

        while (k%3 == 0) {

            k = k + 1;

            n = n / 3;

        }

        if (n > 0)

            cout << k;

        else

           cout<< "Не су­ще­ству­ет";

        return 0;

    }

    алг

    нач

        цел n, k

        ввод n

        k := 0

        нц пока mod(k, 3)=0

            k := k + 1

            n := div(n,3)

        кц

        если n > 0

            то вывод k

            иначе вывод "Не су­ще­ству­ет"

        все

    кон

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

    1.На­пи­ши­те, что вы­ве­дет эта про­грам­ма при вводе числа 9.
    2.При­ве­ди­те при­мер числа, при вводе ко­то­ро­го при­ведённая про­грам­ма на­пе­ча­та­ет то, что тре­бу­ет­ся.
    3.Най­ди­те в про­грам­ме все ошиб­ки (их может быть одна или не­сколь­ко).

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

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

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

    Ответ
  2.   На об­ра­бот­ку по­сту­па­ет по­сле­до­ва­тель­ность из четырёх не­от­ри­ца­тель­ных целых чисел (не­ко­то­рые числа могут быть оди­на­ко­вы­ми). Нужно на­пи­сать про­грам­му, ко­то­рая вы­во­дит на экран ко­ли­че­ство нечётных чисел в ис­ход­ной по­сле­до­ва­тель­но­сти и мак­си­маль­ное нечётное число. Если нечётных чисел нет, тре­бу­ет­ся на экран вы­ве­сти «NO». Из­вест­но, что вво­ди­мые числа не пре­вы­ша­ют 1000. Про­грам­мист на­пи­сал про­грам­му не­пра­виль­но. Ниже эта про­грам­ма для Ва­ше­го удоб­ства при­ве­де­на на пяти язы­ках про­грам­ми­ро­ва­ния.

     Бей­сик  Пас­каль

    CONST n = 4

    count = 0

    maximum = 999

    FOR I = 1 TO n

    INPUT x

    IF x mod 2 <> 0 THEN

    count = count + 1

    IF x > maximum THEN

    maximum = I

    END IF

    END IF

    NEXT I

    IF count > 0 THEN

    PRINT count

    PRINT maximum

    ELSE

    PRINT "NO"

    END IF

    var i, x: integer;

    var maximum, count: integer;

    begin

    count := 0;

    maximum := 999;

    for i := 1 to n do

       begin

       read(x);

       if x mod 2 <> 0 then

       begin

           count := count + 1;

          if x > maximum then

              maximum := i

              end

            end;

    if count > 0 then

    begin

            writeln(count);

            writeln(maximum)

          end

    else

            writeln('NO')

    end.

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

    #include <iostream>

    using namespace std;

    int main(void)

    {

    const int n = 4;

    int i, x, maximum, count;

    count = 0;

    maximum = 999;

    for (i = 1; i <= n; i++) {

      cin>>x;

      if (x % 2 != 0) {

        count++;

      if (x > maximum)

      maximum = i;

          }

    }

    if (count > 0) {

        cout << count;

            cout <<maximum;

    }

    else

       cout <<"NO";

    }

    алг

    нач

    цел n = 4

    цел i, x

    цел maximum, count

    count := 0

    maximum := 999

    нц для i от 1 до n

    ввод x

    если mod(x, 2) <> 0 то

    count := count + 1

    если x > maximum то

    maximum := i

    все

    все

    кц

    если count > 0 то

    вывод count, нс

    вывод maximum

    иначе

    вывод "NO"

    все

    кон

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

    1. На­пи­ши­те, что вы­ве­дет эта про­грам­ма при вводе по­сле­до­ва­тель­но­сти: 2 9 4 3

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

    3. Най­ди­те все ошиб­ки в этой про­грам­ме (их может быть одна или не­сколь­ко). Из­вест­но, что каж­дая ошиб­ка за­тра­ги­ва­ет толь­ко одну стро­ку и может быть ис­прав­ле­на без из­ме­не­ния дру­гих строк. Для каж­дой ошиб­ки: 

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

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

    Ответ
  3.     На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран максимальную цифру числа, кратную 3 и меньше 9. Если в числе нет цифр, кратных 3, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования. Напоминание: 0 делится на любое натуральное число.

     

    Бейсик Python
    DIM N, DIGIT, MAXDIGIT AS LONG
    INPUT N
    MAXDIGIT = 9
    WHILE N > 0
        DIGIT = N MOD 10
        IF DIGIT MOD 3 = 0 THEN
            IF DIGIT < MAXDIGIT THEN
                MAXDIGIT = DIGIT
            END IF
        END IF
        N = N \ 10
    WEND
    IF MAXDIGIT = 9 THEN
        PRINT "NO"
    ELSE
        PRINT MAXDIGIT
    END IF
    N = int(input())
    maxDigit = 9
    while N > 0:
        digit = N % 10
        if digit % 3 == 0:
            if digit < maxDigit:
                maxDigit = digit
        N = N // 10
    if maxDigit == 9:
        print("NO")
    else:
        print(maxDigit))
    Паскаль Алгоритмический язык
    var N,digit,maxDigit: longint;
    begin
        readln(N);
        maxDigit := 9;
        while N > 0 do
        begin
            digit := N mod 10;
            if digit mod 3 = 0 then
                if digit < maxDigit then
                    maxDigit := digit;
                N := N div 10;
        end;
        if maxDigit = 9 then
            writeln('NO')
        else
            writeln(maxDigit)
    end.
    алг
    нач
        цел N, digit, maxDigit
        ввод N
        maxDigit := 9
        нц пока N > 0
            digit := mod(N,10)
            если mod(digit, 3) = 0 то
                если digit < maxDigit то
                    maxDigit := digit
                все
            все
            N := div(N,10)
        кц
        если maxDigit = 9 то
            вывод "NO"
        иначе
            вывод maxDigit
        все
    кон
    С++
    #include <iostream>
    using namespace std;
    int main() {
            long N, digit, maxDigit;
            cin >> N;
            maxDigit = 9;
            while (N > 0) {
                digit = N % 10;
                if (digit % 3 == 0)
                    if (digit < maxDigit)
                        maxDigit = digit;
                N = N / 10;}
            if (maxDigit == 9)
                cout << "NO" << endl;
            else
                cout << maxDigit << endl;
            return 0;}

     

     

       Последовательно выполните следующее.
    1. Напишите, что выведет эта программа при вводе числа 236.
    2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
    3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
    1) выпишите строку, в которой сделана ошибка;
    2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
       Достаточно указать ошибки и способ их исправления для одного языка программирования.
      Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

    Ответ
  4.     На обработку поступает натуральные числа больше 2-х, но не превышающие 1000, пока пользователь не введет 0. Нужно написать программу, которая выводит на экран произведение последовательности нечетных чисел. Если нет четных чисел, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования. Напоминание: 0 делится на любое натуральное число.

     

    Бейсик Python

    DIM A, PROIZ
    INPUT A
    PROIZ= 0
    WHILE A > 0
        IF A MOD 2 = 1 THEN

               PROIZ= PROIZ+ A
        END IF
        INPUT A
    WEND
    IF PROIZ= 0 THEN
        PRINT "NO"
    ELSE
        PRINT PROIZ
    END IF

    A = int(input())
    proiz= 0
    while a > 0:
        if a % 2 == 1:
                proiz= proiz+ a
        A = int(input())
    if proiz== 0:
        print("NO")
    else:
        print(proiz))
    Паскаль Алгоритмический язык
    var a, proiz: longint;
    begin
        readln(a);
        proiz:= 0;
        while a > 0 do
        begin
            if a mod 2 = 1 then
                    proiz:= proiz+ a;
            readln(a);
        end;
        if proiz= 0 then
            writeln('NO')
        else
            writeln(proiz)
    end.
    алг
    нач
        цел a, proiz
        ввод a
        proiz:= 0
        нц пока a > 0
            если mod(a, 2) = 1 то
                    proiz:= proiz+ a
                все
            все
           ввод a
        кц
        если proiz= 0 то
            вывод "NO"
        иначе
            вывод proiz
        все
    кон
    С++
    #include <iostream>
    using namespace std;
    int main() {
            long  a, proiz;
            cin >> a;
            proiz= 0;
            while (a > 0) {
                if (a % 2 == 1)
                    proiz= proiz+ a;
                cin >> a;
                }
            if (proiz== 0)
                cout << "NO" << endl;
            else
                cout << proiz<< endl;
            return 0;}

     

     

       Последовательно выполните следующее.
    1. Напишите, что выведет эта программа при вводе числа 5 3 8 5 0.
    2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
    3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
    1) выпишите строку, в которой сделана ошибка;
    2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
       Достаточно указать ошибки и способ их исправления для одного языка программирования.
      Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

    Ответ
  5.     На обработку поступает натуральные числа меньше 1000, пока пользователь не введет 0. Нужно написать программу, которая выводит на экран кол-во чисел кратных 5 и не кратных 8. Если нет двузначных чисел, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования. Напоминание: 0 делится на любое натуральное число.

     

    Бейсик Python

    DIM A, KOL
    INPUT A
    KOL= 0
    WHILE A > 0

        INPUT A
        IF  A MOD 5=0 and A MOD 8=0 THEN

               KOL= KOL+ 1
        END IF
    WEND
    IF KOL= 0 THEN
        PRINT "NO"
    ELSE
        PRINT KOL
    END IF

    A = int(input())
    kol= 0
    while a > 0:

        A = int(input())
        if a%5 ==0  and a%8 ==0:
                kol= kol+ 1
    if kol== 0:
        print("NO")
    else:
        print(kol))

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

    var a, kol: longint;
    begin
        readln(a);
        kol:= 0;
        while a > 0 do
        begin

            readln(a);
            if a mod 5=0 and a mod 8=0 then
                    kol:= kol+ 1;
        end;
        if kol= 0 then
            writeln('NO')
        else
            writeln(kol)
    end.

    алг
    нач
        цел a, kol
        ввод a
        kol:= 0
        нц пока a > 0

           ввод a
            если mod(digit, 5)=0 и mod(digit, 8)=0  то
                    kol:= kol+ 1
                все
            все
        кц
        если kol= 0 то
            вывод "NO"
        иначе
            вывод kol
        все
    кон

    С++

    #include <iostream>
    using namespace std;
    int main() {
            long  a, kol;
            cin >> a;
            kol= 0;
            while (a > 0) {

                cin >> a;
                if (a%5 ==0  && a%8 ==0)
                    kol= kol+ 1;
                }
            if (kol== 0)
                cout << "NO" << endl;
            else
                cout << kol<< endl;
            return 0;}

     

     

       Последовательно выполните следующее.
    1. Напишите, что выведет эта программа при вводе числа 2 55 70 89 34 40 0.
    2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
    3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
    1) выпишите строку, в которой сделана ошибка;
    2) укажите, как исправить ошибку, т. е. приведите правильный вариант строки.
       Достаточно указать ошибки и способ их исправления для одного языка программирования.
      Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

    Ответ
Закончить тест
Осталось
20 минут

Задания теста

1
2
3
4
5

Еще нет аккаунта?

Пользователям Бингоскул доступна бесплатная подготовка к ЕГЭ по всем видам ФИПИ, просмотр решений и отслеживание статистики
Регистрация

Уже зарегистрированы?

Авторизуйтесь в своей учетной записи, чтобы получить доступ к расширенным возможностям функционала сайта
Вход

Вход в систему

Регистрация

Регистрируясь, я подтверждаю своё согласие с условиями пользовательского соглашения

Активация аккаунта

Спасибо за регистрацию
Мы отправили письмо на указанный электронный адрес.
Чтобы завершить регистрацию, проверьте почтовый ящик и перейдите по ссылке в письме.