2 dimensionales array zurückgeben
-
Hi,
ich bin gerade am verzweifeln, ich möchte in einer unterfunktion von main 2 matrizen die der funktion übergeben wurden multiplizieren und danach das ergebnis an main zurückgeben.
ich habs mit zeigern versucht und hab es nach stundenlangem rumprobieren nich geschafft... kann mir da vieleicht einer mal erklären wie ich das problem löse?#include <stdio.h>
int malnehmen(int m1[3][3], int m2[3][3]);
void main()
{
int m, n, matrix1[3][3], matrix2[3][3], ergebnis[3][3];// Matrix1 eingeben
printf("3x3 Matrix1 eingeben:\n");
for(m=0; m<=2; m++)
{
scanf("%d %d %d", &matrix1[m][0], &matrix1[m][1], &matrix1[m][2]);
}//Matrix2 eingeben
printf("3x3 Matrix2 eingeben:\n");
for(m=0; m<=2; m++)
{
scanf("%d %d %d", &matrix2[m][0], &matrix2[m][1], &matrix2[m][2]);
}//Ausgabe des Term
for(m=0; m<=2; m++)
{
printf("%2d %2d %2d %2d %2d %2d\n", matrix1[m][0],matrix1[m][1],matrix1[m][2], matrix2[m][0],matrix2[m][1],matrix2[m][2] );
}//Ergebnis berechnen
ergebnis = malnehmen(matrix1, matrix2);// Ergebnis ausgeben
printf("\n\n");
for(m=0; m<=2; m++)
{
printf("\n");
for(n=0; n<=2; n++)
{
printf("%d ",ergebnis[m][n]);
}
}}
int malnehmen(int m1[3][3], int m2[3][3])
{
int j, n, m, erg[3][3];// Ergebnismatrix 0 setzen
for(m=0; m<=2; m++)
{
for(n=0; n<=2; n++)
{
erg[m][n] = 0;
}
}// Multiplikation durchführen
for(m=0; m<=2; m++)
{
for(j=0; j<=2; j++)
{
for(n=0; n<=2; n++)
{
erg[m][j] = erg[m][j] + m1[m][n] * m2[n][j];
}
}
}return erg;
}
-
Hallo,
vorschlag:
#include <stdio.h> int malnehmen(int m1[3][3], int m2[3][3], int erg[3][3]); void main(){ int m, n, matrix1[3][3], matrix2[3][3], ergebnis[3][3]; printf("3x3 Matrix1 eingeben:\n"); for(m=0; m<=2; m++){ scanf("%d %d %d", &matrix1[m][0], &matrix1[m][1], &matrix1[m][2]); } printf("3x3 Matrix2 eingeben:\n"); for(m=0; m<=2; m++){ scanf("%d %d %d", &matrix2[m][0], &matrix2[m][1], &matrix2[m][2]); } for(m=0; m<=2; m++){ printf("%2d %2d %2d %2d %2d %2d\n", matrix1[m][0],matrix1[m][1],matrix1[m][2], matrix2[m][0],matrix2[m][1],matrix2[m][2] ); } malnehmen(matrix1, matrix2, ergebnis); printf("\n\n"); for(m=0; m<=2; m++){ printf("\n"); for(n=0; n<=2; n++){ printf("%d ",ergebnis[m][n]); } } } int malnehmen(int m1[3][3], int m2[3][3], int erg[3][3]) { int j, n, m; for(m=0; m<=2; m++){ for(n=0; n<=2; n++){ erg[m][n] = 0; } } for(m=0; m<=2; m++){ for(j=0; j<=2; j++){ for(n=0; n<=2; n++){ erg[m][j] = erg[m][j] + m1[m][n] * m2[n][j]; } } } return 0; }
-
Oki,
das ergebnis array aus der mainfunktion wird über das erg array in der malnehmen funktion geändert.nun noch ne frage: wie geb ich ein array zurück?
angenommen ich möchte das ergebnis array nicht ändern, sondern
mit hilfe der funktion malnehmen ein neues array erstellen, auf das ich
in main zugreifen kann.
c'Ya
-
Original erstellt von syox:
das ergebnis array aus der mainfunktion wird über das erg array in der malnehmen funktion geändert.jo, call by reference
nun noch ne frage: wie geb ich ein array zurück?
genau so!