Zeiger auf Arrays in Funktionen C

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zeiger auf Arrays in Funktionen C

    Hallo Leute,

    bin neu hier...habe dieses Semester Informatik zu belegen...Jetzt sitzt ich vor einer Hausübung und bin schon kurz vorm verzweifeln.

    Wir sollen ein Programm in C welches zwei (mit zufälligen Zahlen befüllte)Matrizen miteinander multipliziert entwerfen. Recht simpel will man meinen....Jedoch habe ich schon nach Std. langen Recherchen im Inet immer noch keine Idee, wie ich eine Matrix einer anderen Funktion übergeben kann.
    Anscheinend ist das nicht so einfach wie Call by Pointer bei einem Zahlenwert mache. In dem Skript kann ich dazu keider auch nichts finden. Hoffe ihr könnt mir helfen:)Hier der Quellcode soweit er fertig ist...wenn ich da mist verzapft habe bitte korrigieren:)

    #include <stdio.h>
    #include <stdlib.h> /*Bibliothek, die die Ftk. random enthält*/

    int k,l,m,n; /*globale var.*/



    int multipMatrix (int *matrixAB[k][n])
    {
    if(l!=m)
    return printf("\nSpalten von A muessen die selbe Anzahl wie die Zeilen von B sein!\n");
    else
    { int matrixA[k][l], matrixB[m][n], i,j,t;


    zufall(&matrixA[k][l], &matrixB[m][n]); /*Matrizen A und B werden zur Befüllung mit Fkt. Zufall aufgerufen*/

    for (i=0; i<(k-1); i++)
    {
    for (j=0; j<(n-1); j++)
    {
    for (t=0; t<(l-1); t++)
    {
    (*matrixAB[j]) += matrixA[i][t] * matrixB[t][j];
    }
    }
    }


    }
    }
    int zufall(int *matrixA[k][l],int *matrixB[m][n])
    {
    int i,j;

    for(i=0;i<=(k-1);i++) /*MatrixA wird mit Zufallszahlen 1-20 befüllt*/
    {for(j=0;j<=(l-1);j++)
    (*matrixA[i][j])=rand()%21;}

    for(i=0;i<=(m-1);i++) /*MatrixB wird mit Zufallszahlen 1-20 befüllt*/
    {for(j=0;j<=(n-1);j++)
    (*matrixB[i][j])=rand()%21;}
    }



    int main()
    {
    int i,j;

    printf("Matrizenmultiplikation\n");
    printf("----------------------\n\n");

    printf("Bitte geben Sie die Dimension k x l der Matrix A ein:\n");
    printf("k:"); scanf("%d", &k);
    printf("l:"); scanf("%d", &l); printf("\n");

    printf("Bitte geben Sie die Dimension m x n der Matrix B ein:\n");
    printf("m:"); scanf("%d", &m);
    printf("n:"); scanf("%d", &n);

    int matrixAB[k][n];

    multipMatrix (&matrixAB[k][n]);

    for(i=0;i<=(k-1);i++)
    { printf("\n");
    for(j=0;j<=(n-1);j++)
    {printf(" %3d |", matrixAB[i][j]);}


    system("pause");
    return 0;

    }