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! 🙂


Anmelden zum Antworten