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!
-
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.
-
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]);