Array an Funktion
-
Hallo,
ich moechte in einem Programm zwei Arrays an eine Funktion uebergeben, in der aus diesen beiden Arrays Werte in ein drittes Array geschrieben werden soll.
Ich verwende dafuer die Funktion:void Power(double*& betr, double* real, double* imag, int mm) { int MM=2*mm; for(int n=0; n<(MM/2+1); n++) { betr[n]= 10*log10(2*((real[n]*real[n])+(imag[n]*imag[n]))/(double)(mm*mm)); } }
die ich mit
Power(F_ampl_betr, F_ampl_real, F_ampl_imag, mm); Power(F_num2_betr, F_num2_real, F_num2_imag, nn); Power(F_trans_betr, F_trans_real, F_trans_imag, mm);
aus int main() aufrufe. Die Variablendeklaration ist dabei
double* F_ampl_betr= new double[MM]; double* F_num2_betr= new double[MM]; double* F_trans_betr=new double[MM];
Leider funktioniert die Funktion nicht so, wie sie soll. Lasse ich dagegen das Ganze in int main() laufen mit
for (n=0; n<(MM/2+1); n++) { F_ampl_betr[n]= 10*log10(2*((F_ampl_real[n]*F_ampl_real[n])+(F_ampl_imag[n]*F_ampl_imag[n]))/(double)(mm*mm)); F_trans_betr[n]= 10*log10(2*((F_trans_imag[n]*F_trans_imag[n])+(F_trans_real[n]*F_trans_real[n]))/(double)(mm*mm)); } for (n=0; n<(NN/2+1); n++) { F_num2_betr[n]= 10*log10(2*((F_num2_real[n]*F_num2_real[n])+(F_num2_imag[n]*F_num2_imag[n]))/(double)(mm*mm)); }
funktioniert es. Leider sehe ich den Fehler nicht, den ich gemacht habe. Kann mir von euch jemand weiterhelfen?
-
hi,
meine lösung:void Power(double* betr, double* const real, double* const imag, int mm) { // int MM=2*mm; -> bsp.: mm=10 -> MM=20 -> in for-schleife bei dir auf 11 gesetzt ==> arrayüberlauf ;) for(int n=0; n<mm; n++) { betr[n]= 10*log10(2*((real[n]*real[n])+(imag[n]*imag[n]))/(double)(mm*mm)); } }
mfg _mika_