Kezdőoldal » Számítástechnika » Programozás » Hogy lehetne ezen segíteni (C++)?

Hogy lehetne ezen segíteni (C++)?

Figyelt kérdés

Többek között azt írja:

invalid operands of types 'double' and 'double(double)' to binary 'operator*'

no match for 'operator*' (operand types are 'std::complex<double>' and 'int')


#include <iostream>

#include <fstream>

#include <cmath>

#include <complex>

#define h 0.01

#define N 10

#define e 2.71828182845905

#define pi 3.14159265358979

using namespace std;


double n(double x)

{

return 1+sqrt(1-x*x);

}


int main()

{

double c=299492458.0, f;

complex<double> i(0.0,1.0), E, Er(cos(2*pi*f*h/c),sin(2*pi*f*h/c)), El(1.0,0.0), T;

for(f=0.01; f<=N; f+=h)

{

for(float j=0.0; j<=N; j+=h)

{

Er = E*(2-4*pi*pi*f*f*h*h*n*n/(c*c))-El;

El = E;

E = Er;

cout << real(E) << endl;

}

T = pow(abs(2*sin(2*pi*f/c)/(Er-E*pow(e,i*2*pi*f*h/c))),2);

}

return 0;

}



2019. márc. 21. 14:05
 1/3 anonim ***** válasza:
Kezdetnek próbáld ne a függvény címét megszorozni egy int-el...
2019. márc. 21. 15:20
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

Egyrészt:

"invalid operands of types 'double' and 'double(double)' to binary 'operator*'"

A probléma ebben a sorban leledzik:

Er = E*(2-4*pi*pi*f*f*h*h*n*n/(c*c))-El;


Az 'n' egy függvény, de te számként próbálod kezelni.


Másrészt:

no match for 'operator*' (operand types are 'std::complex<double>' and 'int')


Na ez picit érdekesebb. A complex osztályon az idevágó szorzás művelet a következőképp van értelmezve:

template<class T> complex<T> operator*(const T& val, const complex<T>& rhs);


Ez azt jelenti, hogy egy complex<T> típusú változót csak T típusú változóval tudsz szorozni. Jelen esetben egy complex<double> változót csak double típusúval. És tartsd szem előtt, hogy a szorzás eredménye complex<double> lesz.


Történetesen ebben a sorban van a hiba:

T = pow(abs(2*sin(2*pi*f/c)/(Er-E*pow(e,i*2*pi*f*h/c))),2);


Az i*2 az amit nem tud értelmezni, mivel az i complex<double> típusú, a 2 meg értelemszerűen int.


Emellett több kérdéses dolog is van a kódodban, pl hogy az E nincsen inicializálva, de használod műveletben, elég kérdéses lesz így az eredmény amit kapni fogsz.

2019. márc. 21. 15:32
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:
Köszönöm.
2019. márc. 22. 20:32

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!