Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Типы переменных


Автор: Mpak 14.12.2006, 14:42
Есть вот такие строчки в программе:
Код

Rmin=(pow(exp,(2*Zmin-1)))/(pow(exp,(2*Zmin+1)));
Rmax=(pow(exp,(2*Zmax-1)))/(pow(exp,(2*Zmax+1)));


Переменные Rmin, Rmax, Zmin и Zmax определены как float.

Си выдает ошибки на этих строках, вида:
Код

Cannot convert 'double (*)(double)' to 'double'
Type mismatch in parameter '__x' (wanted 'double', got 'double (*)(double)')


4 раза...
 smile 

Автор: INHazeR 14.12.2006, 14:46
Код

Rmin = (float)(pow(exp,(2*Zmin-1)))/(pow(exp,(2*Zmin+1)));
Rmax = (float)(pow(exp,(2*Zmax-1)))/(pow(exp,(2*Zmax+1)));

Автор: Mpak 14.12.2006, 14:53
Тоже самое  smile 

Автор: INHazeR 14.12.2006, 15:00
попробуй объяви свои переменные как double

Автор: TaNK 14.12.2006, 15:09
Код

int main(int argc, char* argv[])
{
 double Rmin,Rmax,Zmin=1,Zmax=1,exp=1;
 Rmin = (float)(pow(exp,(2*Zmin-1)))/(pow(exp,(2*Zmin+1)));
Rmax = (float)(pow(exp,(2*Zmax-1)))/(pow(exp,(2*Zmax+1)));
cout<<Rmin<<" " << Rmax;
getch();
        return 0;

так все работает! 

Автор: Romikgy 14.12.2006, 15:09
Цитата(Mpak @  14.12.2006,  13:42 Найти цитируемый пост)
Cannot convert 'double (*)(double)' to 'double'


Цитата(Mpak @  14.12.2006,  13:42 Найти цитируемый пост)
Rmin=(pow(exp,(2*Zmin-1)))/(pow(exp,(2*Zmin+1)));
Rmax=(pow(exp,(2*Zmax-1)))/(pow(exp,(2*Zmax+1)));

а ты уверен что матерится на эти строки , больше похоже что на какую то ф-цию матерится
с одним параметром типа double 
а pow вроде имеет 2 параметра

Автор: Mpak 14.12.2006, 15:16
Цитата(TaNK @ 14.12.2006,  18:09)
Код

 double Rmin,Rmax,Zmin=1,Zmax=1,exp=1;


Зачем задавать exp=1
Это же константа...(экспонента) smile 

Автор: INHazeR 14.12.2006, 15:17
так она и вызывается с двумя параметрами:
Код

pow(exp,(2*Zmin-1))

степень и число, которое надо возвести в степень

TaNK

зачем выполнять приведение к типу float если мы объявили Rmin, Rmax как double? smile

Mpak

чтобы быть до конца уверенным, надо либо убедиться, что exp действительно объявлена где-то в math как экспонента, (go to definition), или самому написать
Код

#define exp 2.78

Автор: Fazil6 14.12.2006, 15:19
exp
это переменная или функция експоненты? 

Автор: Mpak 14.12.2006, 15:19
Romikgy, одна из них константа.
И показывает, что ошибка в этих строках, а место в строке не показывает...

Автор: Fazil6 14.12.2006, 15:19
компиллятор видит эту переменную как указатель на функцию

Автор: Mpak 14.12.2006, 15:23
Fazil6, упс smile ....
насчет функции понял.....smile
Извините, за глупую тему...

Автор: TaNK 14.12.2006, 15:23
извиняйте, забыл просто тут изменить, на компе проверял с double а exp задал просто для проверки...но у меня все работает..
Код

int main(int argc, char* argv[])
{
 double Rmin,Rmax,Zmin=1,Zmax=1,exp;
 Rmin = (double)(pow(exp,(2*Zmin-1)))/(pow(exp,(2*Zmin+1)));
Rmax = (double)(pow(exp,(2*Zmax-1)))/(pow(exp,(2*Zmax+1)));
cout<<Rmin<<" " << Rmax;
getch();
        return 0;

Автор: TaNK 14.12.2006, 15:42
посмотри может копил ругается на то что не подключен 
Код

#include <complex.h>

хотя думаю не из за этого

Автор: Romikgy 14.12.2006, 16:14
Цитата(Mpak @  14.12.2006,  13:42 Найти цитируемый пост)
exp

поменяй имя этой переменой

Автор: TaNK 14.12.2006, 16:59
Код

int main()
{
 double Rmin,Rmax,Zmin=10,Zmax=0.102,expp=2.78;

 Rmin =(pow(expp,(2*Zmin-1)))/(pow(expp,(2*Zmin+1)));
Rmax = (pow(expp,(2*Zmax-1)))/(pow(expp,(2*Zmax+1)));
cout<<Rmin<<" " << Rmax;
getch();
        return 0;
        }

выводятся 2 одинаковых значения....это ошибка?

Автор: Rockie 15.12.2006, 02:32
TaNK, эта формула вообще не зависит от Zmin и Zmax, эти два значения константны. Zmin и Zmax сокращаются:

2,78^(2*Zmin-1) / 2,78^(2*Zmin+1) = 2,78^-1 / 2,78 = 1 / (2,78*2,78) = 1/7,7284 = 0,1293



Автор: TaNK 15.12.2006, 09:11
Цитата(Rockie @ 15.12.2006,  02:32)
TaNK, эта формула вообще не зависит от Zmin и Zmax, эти два значения константны. Zmin и Zmax сокращаются:

2,78^(2*Zmin-1) / 2,78^(2*Zmin+1) = 2,78^-1 / 2,78 = 1 / (2,78*2,78) = 1/7,7284 = 0,1293

понятно..спасибо что подсказал!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)