Hogy lehetne ezen segíteni (C++)?
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;
}
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!