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




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

Дано целое неотрицательное число N. Необходимо вывести два ближайших к нему точных квадрата в порядке возрастания. Например, для N = 2016 нужно вывести числа 1936 и 2025 (1936 = 442, 2025 = 452), а для N = 9 нужно вывести числа 4 и 9.

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

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

 

 

БейсикPython

DIM N, K AS INTEGER

INPUT N

K = 1

WHILE K*K <= N

  K = K + 1

WEND

PRINT K-1, K

END

n = int(input())

k = 1

while k*k <= n:

    k = k + 1

print(k-1,k)

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

алг

нач

  цел n, k

  ввод n

  k := 1

  нц пока k*k <= n

    k := k + 1

  кц

  вывод k-1, " ", k

кон

var n, k: integer;

begin

  read(n);

  k := 1;

  while k*k <= n do

    k := k + 1;

  writeln(k-1, " ", k)

end.

Си++

#include <iostream>

using namespace std;

    int main(){

    int n, k;

    cin >> n;

    k = 1;

    while (k*k <= n)

        k = k + 1;

    cout << k-1 << k << endl;

    return 0;

}

 

 

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

 

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

2. Назовите значение N, при вводе которого программа выведет верный ответ. Укажите этот ответ.

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

 

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

Решение.

1. При вводе N = 2016 программа выведет числа 44 и 45.

2. Программа выведет верный ответ при N = 0. В ответе будут числа 0 и 1.

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

1) неверная организация цикла;

2) неверный вывод результатов.

 

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

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

while k*k <= n do

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

while k*k < n do

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

writeln(k-1, " ", k)

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

writeln((k-1)*(k-1), " ", k*k)

 

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

 

Замечание. N = 0 – единственное подходящее значение. Программа выводит вместо квадратов числа, которые нужно возвести в квадрат. Для 0 и 1 числа совпадают с квадратами, поэтому при N = 0 и N = 1 должен получаться правильный результат. Однако при N = 1 из-за ошибки в организации цикла вместо верного результата «0 1» выводится «1 2», поэтому правильный ответ получается только при N = 0. В работе достаточно привести правильное значение N и ответ программы, подробное обоснование не требуется.