Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
theadamo86
7 / 7 / 0
Регистрация: 14.09.2013
Сообщений: 168
#1

Ошибка при выполнении sqrt() - C++

11.10.2013, 11:01. Просмотров 380. Ответов 8
Метки нет (Все метки)

При попытке выполнить следующий код:
C++
1
double sq = sqrt(2);
компилятор говорит:
task.cpp(18) : error C2668: 'sqrt' : ambiguous call to overloaded function
C:\Program Files\Microsoft Visual C++ Toolkit 2003\include\math.h(626): could be 'long
double sqrt(long double)'
C:\Program Files\Microsoft Visual C++ Toolkit 2003\include\math.h(578): or 'float sqrt
(float)'
C:\Program Files\Microsoft Visual C++ Toolkit 2003\include\math.h(200): or 'double sqrt
(double)'
while trying to match the argument list '(int)'
Как исправить ситуацию?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2013, 11:01     Ошибка при выполнении sqrt()
Посмотрите здесь:

Ошибка при выполнении - C++
Когда запускаю программу на выполнение, выдает ошибку: Linker Error: Undefined symbol input(char near*,int near*, int) in module ...

Ошибка при выполнении - C++
Привет всем. Скажите пожалуйста, что мне делать? При выполнении программы выдает ошибку "Инструкция по адресу "0x004013bd" обратилась к...

Компилируется но при выполнении ошибка - C++
Не могу понять в чем ошибка программа компилируется но крашится посля выполнения нескольких строчек кода P.S в данном коде открываю файл...

Ошибка при выполнении программы - C++
//set.h #pragma once typedef unsigned short WORD; class Set { private: int minElem; int maxElem;

Ошибка при выполнении программы. - C++
#include <iostream> #include <math.h> #include <time.h> #include <cstdlib> using namespace std; int main () { int n, m, k; ...

Ошибка при выполнении программы - C++
Выдает вот такую ошибку при выполнении программы. Компиляция происходит нормально. а работать не хочет. Уже запустил легкую программу, но...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
11.10.2013, 11:04     Ошибка при выполнении sqrt() #2
C++
1
double sq = sqrt(2.);
Добавлено через 1 минуту
компилятор не знает какую версию ф-ции sqrt вызвать, 2. явно указывает что вызов double sqrt(double)
theadamo86
7 / 7 / 0
Регистрация: 14.09.2013
Сообщений: 168
11.10.2013, 11:20  [ТС]     Ошибка при выполнении sqrt() #3
А как быть, если в качестве аргумента выступает переменная:
C++
1
2
int S = 2;
int sq = sqrt(S);
Как сказать компилятору использовать int-версию sqrt?
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 478
Записей в блоге: 1
11.10.2013, 11:23     Ошибка при выполнении sqrt() #4
Цитата Сообщение от theadamo86 Посмотреть сообщение
А как быть, если в качестве аргумента выступает переменная:
C++
1
2
int S = 2;
int sq = sqrt(S);
Как сказать компилятору использовать int-версию sqrt?
C++
1
2
int S = 2;
double sq = sqrt(S*1.0);
Добавлено через 45 секунд
Результат sqrt не может быть int
calculon
14 / 14 / 3
Регистрация: 18.07.2012
Сообщений: 79
11.10.2013, 11:24     Ошибка при выполнении sqrt() #5
Может, просто он будет не всегда верным:
C++
1
2
int s = 2; 
int sq = (int)sqrt((double)s);
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 478
Записей в блоге: 1
11.10.2013, 11:26     Ошибка при выполнении sqrt() #6
Если нужно, используй приведение типов
C++
1
2
int S = 2;
int sq = (int)sqrt(S*1.0);
Добавлено через 47 секунд
calculon написал раньше
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
11.10.2013, 11:37     Ошибка при выполнении sqrt() #7
Цитата Сообщение от theadamo86 Посмотреть сообщение
C++
1
2
int S = 2;
 int sq = sqrt(S)
;
, будьте продвинутым человеком

C++
1
2
int S = 2;
 int sq = sqrt(static_cast<double>(S))
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.10.2013, 13:04     Ошибка при выполнении sqrt() #8
Цитата Сообщение от aLarman Посмотреть сообщение
будьте продвинутым человеком
тогда уж используйте и продвинутый компилятор (c++11), и ручные преобразования целых в вещественные не понадобятся.
Additional overloads are provided in this header (<cmath>) for the integral types: These overloads effectively cast x to a double before calculations (defined for T being any integral type).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2013, 13:34     Ошибка при выполнении sqrt()
Еще ссылки по теме:

При выполнении программы выходит ошибка - C++
Когда выполняется программа выходит ошибка: Необработанное исключение по адресу 0x77A8205E (msvcr120d.dll) в Тест графиков.exe: 0xC0000005:...

Ошибка при выполнении компиляции на Borland C++ - C++
При запуске программы возникают ошибки. Советовали сменить компилятор, но нужно сдать лабу именно на нем. Код программы : #include...

Ошибка при выполнении Логического решения... - C++
#include &lt;iostram&gt; #include &lt;conio.h&gt; #include &lt;cmath&gt; using namespace std; int main(int argc, char *argv){ int...

Ошибка при выполнении метода PushBack - C++
#include &quot;iostream&quot; #include &quot;string.h&quot; #include &lt;stdlib.h&gt; using namespace std; template &lt;typename T&gt; class MyVector { ...


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

Или воспользуйтесь поиском по форуму:
aLarman
11.10.2013, 13:34     Ошибка при выполнении sqrt()
  #9

Не по теме:

я имел ввиду не юзать (double) а юзать static_cast<T>() адэкватнее, но это вопрос уже принципов и привычек поэтому думаю не стоит вдаваться в подробности

Yandex
Объявления
11.10.2013, 13:34     Ошибка при выполнении sqrt()
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru