C++
Sqrt C++: как посчитать квадратный корень и вывести результат
В C++ квадратный корень считают функцией std::sqrt из заголовка <cmath>. Нужно подключить <cmath>, передать число в std::sqrt() и вывести результат
Минимальный пример:
#include <cmath>
#include <iostream>
int main() {
double value = 25;
double result = std::sqrt(value);
std::cout << result << std::endl;
return 0;
}
Вывод:
5
Почему нужен cmath
sqrt относится к математическим функциям стандартной библиотеки. Поэтому без подключения <cmath> компилятор может не знать, что такое std::sqrt
Правильно:
#include <cmath>
И вызов:
std::sqrt(36)
В учебных примерах иногда пишут просто sqrt(36), но лучше сразу привыкать к std::sqrt, чтобы было понятно, откуда берется функция
Пример с вводом числа
#include <cmath>
#include <iostream>
int main() {
double value;
std::cout << "Введите число: ";
std::cin >> value;
if (value < 0) {
std::cout << "Для отрицательного числа обычный корень не считаем" << std::endl;
return 1;
}
std::cout << "Корень: " << std::sqrt(value) << std::endl;
return 0;
}
Проверка:
Введите число: 81
Корень: 9
Если ввести -4, программа покажет понятное сообщение, а не странный результат
Как вывести корень в формуле
Если нужно вывести не только результат, но и саму формулу:
#include <cmath>
#include <iostream>
int main() {
double value = 49;
std::cout << "sqrt(" << value << ") = " << std::sqrt(value) << std::endl;
return 0;
}
Вывод:
sqrt(49) = 7
Как управлять точностью вывода
std::sqrt возвращает число с плавающей точкой. Поэтому для неидеальных корней результат будет дробным:
#include <cmath>
#include <iomanip>
#include <iostream>
int main() {
double value = 2;
std::cout << std::fixed << std::setprecision(3);
std::cout << std::sqrt(value) << std::endl;
return 0;
}
Вывод:
1.414
std::fixed включает обычный десятичный формат, а std::setprecision(3) оставляет три знака после точки. Это удобно, когда вы выводите результат для пользователя, а не просто проверяете код в учебной задаче
Частые ошибки
Забыть include
Если не подключить <cmath>, компилятор может написать, что sqrt не объявлен
Искать символ корня в коде
В C++ не пишут математический знак √ как оператор. Используйте функцию std::sqrt
Передать отрицательное число
Для обычных double корень из отрицательного числа не даст нормальный вещественный результат. Для комплексных чисел нужна отдельная тема и <complex>
Ждать целый результат всегда
std::sqrt(2) вернет дробное число:
std::cout << std::sqrt(2) << std::endl;
Результат будет похож на:
1.41421
Использовать pow вместо sqrt без причины
Технически можно написать std::pow(value, 0.5), но для квадратного корня лучше использовать std::sqrt(value): так понятнее намерение кода, и стандартная библиотека дает отдельную функцию именно для этой операции
Практический сценарий: гипотенуза
Квадратный корень часто нужен в геометрии. Например, чтобы посчитать гипотенузу:
#include <cmath>
#include <iostream>
int main() {
double a = 3;
double b = 4;
double c = std::sqrt(a * a + b * b);
std::cout << c << std::endl;
return 0;
}
Вывод:
5
Мини-задание
Сделайте программу, которая просит пользователя ввести площадь квадрата и выводит сторону квадрата:
double area;
std::cin >> area;
std::cout << std::sqrt(area) << std::endl;
Добавьте проверку, что площадь не отрицательная
Что почитать дальше по C++
Если нужен общий маршрут по теме, откройте рубрику C++. Для соседних задач пригодятся эти разборы:
- setlocale russian c++: как вывести русский текст в C++ без кракозябр
- C++ с нуля: первый файл, переменные и вывод
- Enter в C++: перенос строки, std::endl и ввод через cin
- Microsoft Visual C++ 14.0: что это, зачем нужен и как исправить ошибку установки