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_ 😃


Anmelden zum Antworten