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

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

Войти
Регистрация
Восстановить пароль
 
Alina278
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 38
#1

В чем ошибка не могу понять? - C++

18.12.2013, 22:41. Просмотров 308. Ответов 7
Метки нет (Все метки)

#include <iostream.>
#include <stdio.h>
#include <cmath>

int main()
{
double S = 0.0;

for (int i=1; i<=10; ++i)
S += pow(-1, i+1)*cos(i);

std::cout << S << std::endl;

system("pause");
return 0;
}
: error C2668: cos: неоднозначный вызов перегруженной функции
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(551): может быть 'long double cos(long double)'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(503): или 'float cos(float)'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(116): или 'double cos(double)'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
18.12.2013, 22:47     В чем ошибка не могу понять? #2
cos(i). тип i - int. а такой функции нет. есть, которые принимают long double или float или double вызывается.
компилятор может преобразовать инт к любому из этих типов и тогда вызов будет успешен. но вот эти преобразования для него равнозначны. он не может выбрать нужное. поэтому возникает неоднозначность.
чтобы заработало, укажите явно: cos(static_cast<double>(i));
Alina278
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 38
18.12.2013, 22:54  [ТС]     В чем ошибка не могу понять? #3
Можешь пожалуйста полностью переделать,что-то у меня все равно одна ошибка и осталась
Ev_Hyper
Заблокирован
18.12.2013, 22:57     В чем ошибка не могу понять? #4
На VS6 скомпилировалось без ошибок
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
18.12.2013, 22:59     В чем ошибка не могу понять? #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
#include <stdio.h>
#include <cmath>
 
int main()
{
double S = 0.0;
 
for (int i=1; i<=10; ++i)
S += pow(-1, i+1)*cos((double)i);
 
std::cout << S << std::endl;
 
system("pause");
return 0;
}
Alina278
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 38
18.12.2013, 23:06  [ТС]     В чем ошибка не могу понять? #6
error C2668: pow: неоднозначный вызов перегруженной функции
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(575): может быть 'long double pow(long double,int)'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(527): или 'float pow(float,int)'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(489): или 'double pow(double,int)'
1> при попытке сопоставить список аргументов '(int, int)'
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.12.2013, 23:08     В чем ошибка не могу понять? #7
C++
1
S += pow(-1.0, i+1)*cos((double)i);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 23:08     В чем ошибка не могу понять?
Еще ссылки по теме:
не могу понять в чем ошибка. C++
C++ не могу понять в чем ошибка
Не могу понять в чем ошибка C++
Не могу понять в чем ошибка? C++
C++ не могу понять в чем ошибка

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

Или воспользуйтесь поиском по форуму:
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
18.12.2013, 23:08     В чем ошибка не могу понять? #8
может быть стоит поступить так же как и с косинусом?
вы ошибки то хоть читали и в состоянии сделать хоть какие-то выводы?
pow(double(-1), i + 1)
Yandex
Объявления
18.12.2013, 23:08     В чем ошибка не могу понять?
Ответ Создать тему
Опции темы

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