Как возвести в квадрат в си
Перейти к содержимому

Как возвести в квадрат в си

  • автор:

Возведение числа в квадрат

Для возведения числа в квадрат в Excel можно использовать функцию степени, которая представлена символом крышки (^). Используйте формулу =N^2,в которой N — это число или значение ячейки, которую нужно квадратить. Эту формулу можно использовать несколько раз на всем протяжении всего таблицы.

Возведение в квадрат числа в отдельной ячейке

Формула находится в ячейке.

  1. Щелкните внутри ячейки на листе.
  2. Введите в ячейку =N^2, где N — это число, которое нужно возвести в квадрат. Например, чтобы вставить в ячейку A1 квадрат числа 5, введите в нее =5^2.
  3. Нажмите клавишу ВВОД, чтобы получить результат.

Совет: Для этого вы также можете щелкнуть другую ячейку.

Результат возведения в квадрат находится в ячейке.

Возведение в квадрат числа в другой ячейке

  1. Щелкните внутри ячейки и введите нужное число.
  2. Вы можете выбрать другую пустую ячейку на одном из них.
  3. Введите =N^2 в пустую ячейку, в которой N — это ссылка на ячейку, содержаща числовую величину, которую нужно квадратить. Например, чтобы отобразить квадрат значения в ячейке A1 в ячейке B1, введите =A1^2 в ячейку B1.
  4. Нажмите клавишу ВВОД, чтобы получить результат.

Дополнительные сведения

Вы всегда можете задать вопрос эксперту в Excel Tech Community или получить поддержку в сообществах.

Как возвести в квадрат в си

Минимальная программа на С++ состоит из одной функции main, именно с нее начинается работа программы. Однако, мы можно (и нужно) пользоваться другими функциями. В языке С++ существует большое количество функций стандартной библиотеки STL ( глава 2), а также можно определять свои собственные функции.

1.9.1 Использование функций библиотеки STL (пример 11)

Стандартная библиотека C++ предлагает широкий набор функций для выполнения математических вычислений, операций со строками и символами, ввода-вывода, обработки ошибок и многих других полезных операций. Это облегчает работу программистов, поскольку эти функции реализуют многое из того, что им обычно требуется. Прототипы функций размещаются в заголовочных файлах, так что они могут использоваться любыми программами, включающими соответствующий заголовочный файл.

Например, в языке С++ не существует оператора возведения в степень, но зато есть функция возведения в степень, которой можно воспользоваться. Для этого нужно подключить заголовочный файл и в обратиться к функции pow() в теле программы.

///////////////////////////////////////////////////////////////////////////// // Прикладное программирование // Пример 11. Обращение к фукнции возведения числа в степень // // Кафедра Прикладной и компьютерной оптики, http://aco.ifmo.ru // Университет ИТМО ///////////////////////////////////////////////////////////////////////////// // подключение библиотеки ввода-вывода #include // подключение математической библиотеки #include // подключение стандартного пространства имен для использования библиотек using namespace std; ///////////////////////////////////////////////////////////////////////////// // функция main начинает исполнение программы void main() < double pi=3.14; // возведение числа в степень // обращение к функции - пример 1 double power = pow(3.14, 2); // обращение к функции - пример 1 power = pow(pi, 2); // обращение к функции - пример 3 cout <///////////////////////////////////////////////////////////////////////////// 

Функция pow() возводит число 3.14 в квадрат и присваивает полученный результат переменной power, где pow — имя функции; числа 3.14 и 2 — аргументы функции. В качестве аргументов функции может быть число или переменная соответствующего типа.

Аргументы перечисляются в скобках после имени функции, если аргументов несколько, то они отделяются друг от друга запятыми.

1.9.2 Определение новых функций

Определение (реализация) функции

Определение функции осуществляется следующим образом:

в общем виде
пример
тип имя(список аргументов с типами) < инструкции return возвращ.знач.; >
double plus(double x, double y) < return x+y; >

Тип возвращаемого значения может быть целым, вещественным, и т.д., кроме того, функция может не возвращать никакого значения, тогда при ее определении (и описании) указывают тип void.

void print_value(double res) < cout"result is: "

Во время выполнения какой-либо функции управление возвращается в вызывающую программу, когда программа достигает закрывающей фигурной скобки или при исполнении оператора return. Если функция не возвращает никакого значения, оператор return должен быть «пустым», а если возвращает – после оператора return указывается возвращаемое значение. Для функции, не возвращающей никакого значения, наличие оператора return не является обязательным.

Описание функции (прототип)

Обычно функции снабжаются прототипами, которые помещаются в отдельный заголовочный (header) файл или в начале файла. Прототипом называется объявление функции:

в общем виде
пример
возвращ.тип имя (список аргументов с типами);
double plus(double x, double y)

Компилятор сверяется с прототипом функции, чтобы проверить, содержат ли вызовы функции правильное число аргументов нужных типов и перечислены ли типы аргументов в правильном порядке. Кроме того, прототип функции необходим компилятору для того, чтобы убедиться, что возвращаемое функцией значение корректно используется в вызвавшем функцию выражении (например, вызов функции, возвращающий void, не может входить в правую часть оператора присваивания). Каждый аргумент должен быть совместим с типом соответствующего параметра. Например, параметр типа double может принимать значения 7.35, 22 или -0.03456, но не строку вроде «hello». Если передаваемые функции аргументы не совпадают по типу с параметрами, указанными в прототипе функции, компилятор пытается преобразовать аргументы к соответствующему типу.

Обращение к функции (вызов функции)

Каждому параметру в определении функции (формальный параметр функции) должен соответствовать один аргумент в вызове функции. В данном примере, когда функция вызывается, параметр функции х инициализируется значением аргумента b, параметр у инициализируется значением аргумента c, а возвращаемое значение присваивается переменной a.

имя (список аргументов);
double a, b, c; a=plus(b, c);

1.9.3 Пример функции (пример 12)

В примере используются две функции – функция сложения двух чисел и функция печати числа на экран. Значение функции plus можно присвоить какой-то переменной, или использовать прямо при вызове другой функции или при использовании оператора cout.

///////////////////////////////////////////////////////////////////////////// // Прикладное программирование // Пример 12. Функция сложения двух чисел // // Кафедра Прикладной и компьютерной оптики, http://aco.ifmo.ru // Университет ИТМО ///////////////////////////////////////////////////////////////////////////// // подключение библиотеки ввода-вывода #include // подключение стандартного пространства имен для использования библиотек using namespace std; // объявление функции (прототип функции) // функция складывает два числа double plus(double x, double y); // функция печати результата void print_value(double res); ///////////////////////////////////////////////////////////////////////////// // функция main начинает исполнение программы void main() < // объявление и инициализация двух переменных double x1=1, x2=2; // обращение к функции - пример 1 double res = plus(x1, x2); // обращение к функции - пример 2 res = plus(55.5, res); print_value(res); // обращение к функции - пример 3 cout<// обращение к функции - пример 4 print_value(plus(res, x2)); > ///////////////////////////////////////////////////////////////////////////// // Определение (реализация) функции сложения двух чисел double plus(double x, double y) < return x+y; > ///////////////////////////////////////////////////////////////////////////// // Определение (реализация) функции печати результата void print_value(double res) < cout"result is: " ///////////////////////////////////////////////////////////////////////////// 

Как возводить число в квадрат. Численный эксперимент

Часто, не задумываясь, мы используем стандартные функции, например, вычисляя квадрат числа X, мы пишем z = Math.Pow(X,2). Другой вариант: z = X * X. Какой из них быстрее и во сколько раз?
Напишем простенькую программу, использующую класс DateTime. Чтобы разница была заметна, выполним возведение в квадрат N = 2 000 000 000 раз. Тогда:

using System; namespace скорость_вычислений_квадрата_числа < class Program < public static void Main() < int N = 2000000000; double x = 2; // Старт 1 var dt = DateTime.Now; var tm = dt.Minute; var ts = dt.Second; // Старт 1 var t = tm * 60 + ts; for (int j=0; j < N; j++) x = Math.Pow(x,2.0); dt = DateTime.Now; tm = dt.Minute; ts = dt.Second; // Финиш 1 t = tm * 60 + ts - t; Console.WriteLine("Через Pow(), секунд - " + t); // Старт 2 dt = DateTime.Now; tm = dt.Minute; ts = dt.Second; t = tm * 60 + ts; for (int j = 0; j < N; j++) x = x * x; dt = DateTime.Now; tm = dt.Minute; ts = dt.Second; // Финиш 2 t = tm * 60 + ts - t; Console.WriteLine("Перемножение, секунд - " + t); Console.ReadLine(); >> >

Результат на моем компьютере:
Через Pow(), секунд — 29
Перемножение, секунд — 9

Различие в три раза. Сделайте вывод.

NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.

Язык Си в примерах/Степень числа

Приведёный выше пример не будет работать для отрицательных показателей степени (см. третью строку функции «power»). Правильнее было бы так:

/* Степень числа: простая рекурсия */ #include double power(double x, long n)  if(n == 0) return 1.0; if(n  0) return 1.0 / (x * power (1.0 / x, n + 1)); return x * power(x, n - 1); > void main()  double x; long n; while (scanf ("%lf %ld", &x, &n) == 2)  printf("%16.16lf\n", power (x, n)); > > 

Например, если обозначить стрелочкой → слово «сводится к », то при вычислении a 12 \,\!> для первой рекурсии получим цепочку длины 12:

a 12 → a 11 → a 10 → a 9 → a 8 → a 7 → a 6 → a 5 → a 4 → a 3 → a 2 → a 1 → a 0 . \to a^\to a^\to a^\to a^\to a^\to a^\to a^\to a^\to a^\to a^\to a^\to a^.\,\!>

А для второй рекурсии цепочку из 5 шагов: a 12 → a 6 → a 3 → a 2 → a 1 → a 0 . \to a^\to a^\to a^\to a^\to a^.\,\!>

Для больших n разница в длине цепочки более разительная. В частности a 10000 \,\!> первой рекурсией вычисляется за 10000 шагов, а второй — за 19 шагов.

/* Программа 2: степень числа -- оптимизированная рекурсия. */ double power(double x, long n)  if(n == 0) return 1; if(n  0) return power ( 1 / x, -n); if(n % 2) return x * power (x, n - 1); return power(x * x, n / 2); > 
/* Программа 3: cтепень числа -- оптимизированный алгоритм без рекурсии. */ double power(double x, long n)  double a = 1; while(n)  if(n % 2)  a *= x; n--; > else x *= x; n /= 2; > > return a; > 
  • Напишите программу, вычисляющую double в степени double.
  • Сколько шагов требуется для вычисления a 30 \,\!> вторым методом?
  • Покажите, что второй алгоритм выполняется за логарифмическое по n число шагов, а точнее ограничено сверху 2 ⋅ log 2 ⁡ n n\,\!> (еще точнее: в точности равно числу знаков в двоичной записи числа n плюс число единичек в этой записи).
  • Объясните, как работает программа 3.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *