Ich habe ein Problem mit meiner Aufgabe, wo ich drei Matrizen habe. Ich sollte zuerst eins (a) mit Sekunde (b) multiplizieren und das Ergebnis zurück in das dritte (c). Es lohnt sich auch zu sagen, dass ich mich nur mit Zeigern bewegen kann, ich kann den Index nicht in Schleifen verwenden.Multiplikation der Matrix mit einer anderen in C++
Das Hauptproblem ist, wenn dim1 == dim und Matrix nicht quadratisch ist. Alle sollten in C++ geschrieben sein. Mein Code gibt fast ein gutes Ergebnis zurück, aber es sieht so aus, als ob ich in der ersten Zeile Müllwerte übergebe. Es sieht so aus, als würde ich diese nicht mit Werten füllen. Ich würde mich über jede Hilfe freuen. Danke
void multiply(int* a[], int* b[], int* c[], int dim1, int dim2, int
dim3){
for(int i = 0; i < dim1; i++){
for(int j = 0; j < dim3; j++){
for(int k = 0; k < dim2; k++){
*(*(c+i)+j) += *(*(a+i)+k) * *(*(b+k)+j);
}
}
}
for(int i = 0; i < dim1; i++){
for(int j = 0; j < dim3; j++){
cout << *(*(c+i)+j) << "\t";
}
cout << endl;
}
}
int main(){
const int dim1 = 3;
const int dim2 = 2;
const int dim3 = 3;
int a[dim1][dim2] = {{1,2},{3,4},{5,6}};
int b[dim2][dim3] = {{1,2,3},{4,5,6}};
int c[dim1][dim3] = {};
int *tab1 [dim1];
int *tab2 [dim2];
int *tab3 [dim3];
for(int i = 0; i < dim1; i++){
*(tab1+i) = *(a+i);
*(tab2+i) = *(b+i);
*(tab3+i) = *(c+i);
}
multiply(tab1,tab2,tab3,dim1,dim2,dim3);
}
Sie sollten '* (* (c + i) + j) = 0 'vor der' k' Schleife setzen. – LutzL