Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2012, 23:42   #1
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
Вопрос Ошибка в коде не могу понять в чем

Вот код программы:
Код:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
  double R;
  int x;
  cout << "X=";
  cin >> x;
  R=abs(1-pow(exp,4*cos(x)));
  cout << R << endl;
 
 
system("pause");
return 0; 
}
вот ошибка:
Math.cpp cannot convert `double (*)(double)' to `double' for argument `1' to `double pow(double, double)'

как ее исправить?
Вот сам задача:
Ссылка на формулы записана в ворде: http://spaces.ru/files/?sid=&amp;read=25939011
Sylar9 вне форума Ответить с цитированием
Старый 04.01.2012, 00:41   #2
CaHb4ec
Пользователь
 
Регистрация: 02.01.2012
Сообщений: 25
По умолчанию

Во-первых, cos принимает в качестве параметров double, float либо long double, а x объявлен как int.
Во-вторых, exp является такой же функцией как и cos, а ее параметры и есть значение степени.
В итоге получаем формулу вида: R=abs(1-exp(4*cos(x)));
CaHb4ec вне форума Ответить с цитированием
Старый 04.01.2012, 01:03   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

во первых не актуально, доступно автоматическое преобразование int->double.
а во вторых верно, exp это функция, а не константа.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.01.2012, 01:19   #4
CaHb4ec
Пользователь
 
Регистрация: 02.01.2012
Сообщений: 25
По умолчанию

Не понял, что именно вы имеете в виду под автоматическим преобразованием? Если оставить x как int то cos(x) работать не будет. даже проверил по такому случаю...
CaHb4ec вне форума Ответить с цитированием
Старый 04.01.2012, 01:25   #5
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от CaHb4ec Посмотреть сообщение
Не понял, что именно вы имеете в виду под автоматическим преобразованием? Если оставить x как int то cos(x) работать не будет. даже проверил по такому случаю...
Все работает:
http://liveworkspace.org/code/186800...04b6e1830439af

Может быть ты как то не так проверял?
_Bers вне форума Ответить с цитированием
Старый 04.01.2012, 01:29   #6
sVasilich
Форумчанин
 
Аватар для sVasilich
 
Регистрация: 16.12.2009
Сообщений: 224
По умолчанию

Хех) А у меня Visual Studio на
Код:
	int a=1;
	double b;
	b=cos(a);
ругнулась, т.к. существует более 1 перегрузки вызываемой функции подходящей под такой набор аргументов
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...

Последний раз редактировалось sVasilich; 04.01.2012 в 01:32.
sVasilich вне форума Ответить с цитированием
Старый 04.01.2012, 01:49   #7
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от sVasilich Посмотреть сообщение
Хех) А у меня Visual Studio на
Код:
	int a=1;
	double b;
	b=cos(a);
ругнулась, т.к. существует более 1 перегрузки вызываемой функции подходящей под такой набор аргументов
А.. ну да.. студия, она такая)
_Bers вне форума Ответить с цитированием
Старый 04.01.2012, 02:28   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

насчет права студия или нет, надо читать стандарт.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.01.2012, 10:35   #9
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
Вопрос

Цитата:
Сообщение от CaHb4ec Посмотреть сообщение
Во-первых, cos принимает в качестве параметров double, float либо long double, а x объявлен как int.
Во-вторых, exp является такой же функцией как и cos, а ее параметры и есть значение степени.
В итоге получаем формулу вида: R=abs(1-exp(4*cos(x)));
все равно ошибка
вот код исправлены:
Код:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
  double R;
  double x;
  cout << "X=";
  cin >> x;
  R=abs(1-exp(4*cos(x));
  cout << R << endl;
 
 
system("pause");
return 0; 
}
Sylar9 вне форума Ответить с цитированием
Старый 04.01.2012, 10:40   #10
CaHb4ec
Пользователь
 
Регистрация: 02.01.2012
Сообщений: 25
По умолчанию

Цитата:
R=abs(1-exp(4*cos(x));
одну закрывающуюся скобочку забыл.
у меня тоже VS стоит и там с параметром как int не прокатывает

Последний раз редактировалось CaHb4ec; 04.01.2012 в 10:44.
CaHb4ec вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
где ошибка в коде ?не могу понять Qiper Общие вопросы C/C++ 26 02.04.2012 21:19
Си. Не могу понять в чем ошибка Gerbera Помощь студентам 2 12.07.2011 19:11
ошибка в коде. не могу понять где. hottabi4 Помощь студентам 4 10.06.2011 19:02
Не могу понять в чем ошибка.... Blonde Помощь студентам 0 21.05.2011 14:19
Не могу понять где ошибка в коде SeRhy Общие вопросы C/C++ 5 20.09.2009 13:10