0 / 0 / 0
Регистрация: 04.02.2017
Сообщений: 12
1

Что означает sqrt(double);

24.04.2018, 20:01. Показов 2811. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Cоздали структуру
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct{
int x;
int y;
}pt;
 
//Чтобы вычислить расстояние от начала координат (0,0) до pt, можно
//написать:
 
int main()
{
pt={3,4};
double dist, sqrt(double); 
dist = sqrt((double)pt.x * pt.x + (double)pt.y * pt.y);
Что тут означает sqrt(double) во 12-ой строке программы
0
24.04.2018, 20:01
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.04.2018, 20:01
Ответы с готовыми решениями:

Что означает double vars[NUMVARS];
double vars;

[C++ Error] Sqrt x.cpp(16): E2268 Call to undefined function 'sqrt'. Что это за ошибка???
Когда я испльзую функцию sqrt() компилятор выводит: Sqrt x.cpp(16): E2268 Call to undefined function 'sqrt' Что это значит???

Sqrt(double)
Не могу понять, что это значит: double dist, sqrt(double); Понятно, что это объявление переменных, но зачем дабл в скобках?

8
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
24.04.2018, 20:23 2
А оно компилируется?
0
Модератор
Эксперт С++
 Аватар для zss
13728 / 10924 / 6482
Регистрация: 18.12.2011
Сообщений: 29,159
24.04.2018, 20:28 3
Цитата Сообщение от aaaatropos Посмотреть сообщение
double dist, sqrt(double);
Можно расписать как
C++
1
2
double dist; //объявление переменной dist
double  sqrt(double); //объявление функции sqrt
Однако такого объявления недостаточно, чтобы компоновщик подгрузил эту функцию.
Все равно придется писать
C++
1
#include  <math.h>
0
0 / 0 / 0
Регистрация: 04.02.2017
Сообщений: 12
24.04.2018, 21:58  [ТС] 4
А что это вообще, объявление функции? В первый раз увидел такое. И еще, если его убрать результат не меняется, так что я вообще не понял зачем этот кусок кода.
0
 Аватар для QuakerRUS
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
24.04.2018, 23:00 5
Уберите из 12й строки все что после dist.
0
Диссидент
Эксперт C
 Аватар для Байт
27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
24.04.2018, 23:10 6
Цитата Сообщение от zss Посмотреть сообщение
Однако такого объявления недостаточно, чтобы компоновщик подгрузил эту функцию.
Все равно придется писать
Имхо, совершенно не обязательно. Компоновщик подгрузит (если вообще библиотека мат-функций подключена) В Линухе для этого иногда приходится писать -lm. Но это в командной строке. В в коде достаточно определить double sqrt(double) до использования sqrt. Просто, чтобы все знали, что возвращается double, а не int
PS. Это все не считая плюсовых заморочек по изменению имени функции...

Добавлено через 2 минуты
Цитата Сообщение от aaaatropos Посмотреть сообщение
А что это вообще, объявление функции? В первый раз увидел такое.
Так обычно не пишут. Но конструкция вполне законная. Хотя брать на вооружение не советую...
1
 Аватар для QuakerRUS
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
24.04.2018, 23:38 7
Цитата Сообщение от Байт Посмотреть сообщение
Но конструкция вполне законная
Только работать не будет без горы макросов, которые прописаны в заголовочном файле. А с подключением заголовочного файла теряет смысл.
0
 Аватар для Argus19
730 / 411 / 78
Регистрация: 24.09.2017
Сообщений: 2,390
Записей в блоге: 17
15.12.2022, 14:53 8
Как я понимаю, в строке 13:
Цитата Сообщение от aaaatropos Посмотреть сообщение
sqrt((double)pt.x * pt.x + (double)pt.y * pt.y);
(double)
некий аналог приведения к double результата умножения целых чисел?
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
15.12.2022, 15:41 9
Цитата Сообщение от QuakerRUS Посмотреть сообщение
Только работать не будет без горы макросов, которые прописаны в заголовочном файле.
Да дело тут не в макросах совсем.
Просто если мы такое пишем в С++, то такое объявление функции в локальном скоупе будет иметь манглинг в стиле С++, а в библиотеке эта функция имеет манглинг в стиле Си. Поэтому компоновщик ее и не найдет.
Т.е. если этот код собирать как С, а не как С++, то все нормально сработает.
В С++ существует способ сделать объявление функции насильно в стиле Си
C++
1
extern "C" { double sqrt(double); }
однако в локальном скоупе он не работает.
0
15.12.2022, 15:41
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.12.2022, 15:41
Помогаю со студенческими работами здесь

Почему sqrt требует тип double?
Здравствуйте. Заметил, что в VS 2008 при вызове некоторых математических функций, в частности sqrt, требуется явно приводить тип к double....

Вычислить значение выражения: sqrt(3+sqrt(6+.+sqrt(96+sqrt(99)
Пытаюсь решить данное выражение, но ответ выходит слишком большим, вот наработка: #include &lt;iostream&gt; #include &lt;math.h&gt; ...

Цикл: Для числа N вычислить значение следующего выражения: sqrt((1) + sqrt((2) + ... + sqrt(2 * N)))
Как это решить? sqrt((1)+sqrt((2)+..+sqrt(2n)))

Вычислить значение выражения sqrt (2 + sqrt (2 + sqrt (2 ... sqrt2))), (n-слагаемых)
Вычислить значение выражения sqrt (2 + sqrt (2 + sqrt (2 ... sqrt2))), (n-слагаемых),с помощью iostream, stdio.С помощью цикла for або while

Дано натуральное число n. Вычислить sqrt(2+ sqrt(5 + sqrt(7...))
Дано натуральное число n.Вычислить sqrt(2+ sqrt(5 + sqrt(7...)). Под корнями располагается n первых простых чисел. Написал как находить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Комментарии в JSON
hw_wired 10.02.2025
JSON - текстовый формат обмена данными, построенный на основе синтаксиса JavaScript. Этот формат отличается простотой, читаемостью и широкой поддержкой во всех современных языках программирования. . . .
Перезаписываем локальные файлы с помощью git pull
hw_wired 10.02.2025
Git pull - незаменимая команда для синхронизации локального репозитория с удаленным. При работе над проектом в команде разработчиков часто возникает необходимость получить актуальные изменения,. . .
Оператор --> в C++
hw_wired 10.02.2025
Оператор --> (называемый "spaceship operator" или оператор космического корабля) - важное нововведение в стандарте C++20, упрощающее реализацию операций сравнения в пользовательских типах данных. . . .
Отмена git add до коммита
hw_wired 10.02.2025
Git предлагает несколько методов для отмены индексации файлов перед созданием коммита. Разработчики часто сталкиваются с ситуацией, когда нужно убрать файлы из индекса, не теряя внесенные изменения в. . .
Типы MIME в JSON: что и когда использовать в REST API
hw_wired 10.02.2025
MIME-типы играют ключевую роль в современных веб-приложениях, особенно в контексте REST API и микросервисной архитектуры. Они определяют формат передаваемых данных между клиентом и сервером, что. . .
Переименование локальной ветки Git
hw_wired 10.02.2025
Git предлагает систему управления версиями, где ветки играют ключевую роль в организации разработки. Ветки позволяют изолировать изменения кода, экспериментировать с новыми функциями и поддерживать. . .
Удаление элемента из массива в JavaScript
bytestream 10.02.2025
В JavaScript массивы - это упорядоченные наборы данных, которые часто требуют модификации, включая удаление элементов. Самый распространенный метод для этой задачи - splice(). Этот метод позволяет не. . .
Что значит yield в Python
bytestream 10.02.2025
Ключевое слово yield в Python создает генераторную функцию - особый тип функции, которая возвращает итератор. В отличие от обычных функций, использующих return для возврата значения и завершения. . .
Чем отличаются git pull и git fetch
bytestream 10.02.2025
Git предоставляет множество команд для работы с удаленными репозиториями, среди которых особое место занимают git fetch и git pull. Эти команды помогают синхронизировать локальный репозиторий с. . .
Как удалить ветку Git в локальном и удаленном репозитории
bytestream 10.02.2025
Git предлагает развитую систему ветвления, позволяющую разработчикам создавать параллельные версии кода для различных задач. Ветка в Git - это легковесный указатель на определенный коммит, который. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru