dynamisches array aufrufen in funktion



  • Hallo,

    ich muss eine matrix speichern, wobei die größe erst während der laufzeit bekannt ist.

    Wollte das mit einem array machen:

    für Matrix A:

    int** A = new int* [dim1];
    for(int i=0;i<dim1;i++)
    {
       A[i] = new int[dim2];
    }
    

    jetzt brauche ich eine Funktion "Skalarprodukt", die 2 Spalten aus der Matrix A herausnimmt und das Skalarprodukt bildet und diesen Wert wiederum in eine Matrix B schreibt.

    z.B.
    Skalprodukt von A[0] und A[1] in B[0][0].

    wie kann ich die beiden Spalten übergeben? Wobei ich B[0][0] ja verändern will.

    Ist A ein Pointer?

    ich bräuchte irgendwie sowas in der Art...

    void Skalarprodukt(int* b00, int[]A1, int[]A2)) {}
    

    mit dem Aufruf

    Skalarprodukt(B[0][0],A[0],A[1])
    

    Ich hoffe mich kann jemand verstehen *g* und mir weiterhelfen!

    Vielen Vielen Dank!


  • Mod

    Die Syntax für die Funktion die du suchst ist:

    void Skalarprodukt(int b00, int *A1, int *A2)) {}
    

    Aber anstatt mit dynamischen Arrays rumzuhantieren, solltest du die lieber mal std::vector ansehen.



  • Ich glaub die ist passender.

    void Skalarprodukt(int &b00, int *A1, int *A2)) {}
    

    Mit der anderen übergibst du für b00 nur ne Kopie damit ist verändern ausgeschlossen. Außerdem wäre es wohl nicht schlecht die Länge des Arrays mitzugeben.


  • Mod

    Ups, Xebov hat natürlich recht. Ich benutze Referenzen fast nie dafür um Ergebnisse zurückzugeben, da habe ich jetzt nicht an das & gedacht.



  • vielen dank =).

    jetzt hab ich nur noch folgendes Problem:

    der wert soll doch nur in einem einfachen Array stehen, also hab ich folgendes initalisiert.

    int* b = new int[n];
    

    die funktion klappt jetzt auch

    void Skalarprodukt(int &b0, int *A1, int *A2)) {}
    

    das einzigste Problem ist jetzt, dass ich sie nicht aufrufen kann, also

    SkalarProdukt(&b[0],&A[0],&A[1]); klappt nicht.
    

    was muss ich ändern?



  • SkalarProdukt(b[0],A[0],A[1]);
    

Anmelden zum Antworten