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

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

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

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

11.10.2013, 11:01. Просмотров 397. Ответов 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)'
Как исправить ситуацию?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2013, 11:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при выполнении sqrt() (C++):

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

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

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

Ошибка памяти при выполнении, при компиляции не выводит ошибки - C++
ПОмогите плс программа вводит строку символов до точки, а после вычисляет процент согласных в этой строке и выводит их в обратном порядке....

При выполнении разных операций с MS VS2013, например, при закрытии, иногда появляется ошибка - C++
В кодерстве совсем-совсем новичёк, поэтому извиняйте за нубость вопроса. Пытаюсь разобраться в программе MS Visual Studio 2013 (ставил под...

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

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

Не по теме:

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

1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2013, 13:34
Привет! Вот еще темы с ответами:

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

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

Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n))) - C++
Вычислить с помощью рекурсии и без нее - y(n) = sqrt(1+sqrt(2+...sqrt(n).. Как выполнить задание с помощью рекурсии? #include...

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


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

Или воспользуйтесь поиском по форуму:
9
11.10.2013, 13:34
Ответ Создать тему
Опции темы

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