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




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

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

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

 

 

БейсикPython

DIM N, K AS INTEGER

INPUT N

K = 1

WHILE K*K <= N

  K = K + 1

WEND

PRINT (K-1)*(K-1), K*K

END

n = int(input())

k = 1

while k*k <= n:

    k = k + 1

print((k-1)*(k-1),k*k)

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

алг

нач

  цел n, k

  ввод n

  k := 1

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

    k := k + 1

  кц

  вывод (k-1)*(k-1), " ", k*k

кон

var n, k: integer;

begin

  read(n);

  k := 1;

  while k*k <= n do

    k := k + 1;

  writeln((k-1)*(k-1),' ',k*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-1) << k*k << endl;

    return 0;

}

 

 

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

 

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

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

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

 

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

Решение.

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

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

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

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

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

 

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

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

while k*k <= n do

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

while k*k < n do

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

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

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

writeln(k-1,' ',k)

 

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

 

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

В работе достаточно привести правильное значение N и ответ программы, подробное обоснование не требуется.