Sunday, May 1

Matrizenmultiplikation in C

Aufgabe: Schreiben Sie in einem C-Programm matrix.c eine Funktion die zwei 4x4 Matritzen multipliziert, und testen Sie sie mit den folgenden zwei Matritzen, deren Speicherplatz Sie statisch alloziieren.
Natürlich kann dieser Code auch mit Eingaben leicht realisiert werden, ersetzt dazu die Initialisierung mit den expliziten Werten durch die Eingabeschleifen imKommentar /* Optional: Eingabe */.

Quellcode:

/* Programm zur Matrizenmultiplikation        CA 2011 */


/* Bibliothek-Einbindung für Ein- und Ausgaben (scanf, printf) */
#include


/* Hauptprogramm main */
int main(void)
{
/* Statische Alloziierung zweier gegebener 4x4-Matrizen mit expliziten Werten und einer mit Nullen initalisierten Loesungs-Matrix */
int a[4][4]={{0,2,1,0},{2,0,0,-1},{4,1,2,0},{1,1,-3,4}},
    b[4][4]={{-2,1,4,0},{1,1,-1,0},{1,2,0,0},{1,-3,3,2}},
    c[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};


/* for-Schleifen-Zähler */    
int i,j,k;

                                /* Optional: Eingabe int input; printf("\n Geben Sie Werte der Matrix A ein:"); for(i=1;i<=3;i++) { for(j=1;j<=3;j++) { printf("\n%d.te Zeile und %d.te Spalte: ", i,j); scanf("%d",&input); a[i][j]=input; } } printf("\n Geben Sie Werte der Matrix B ein:"); for(i=1;i<=3;i++) { for(j=1;j<=3;j++) { printf("\n %d.te Zeile und %d.te Spalte : ", i,j); scanf("%d",&input); b[i][j]=input; } } */
/* for-Schleifen, Komponenten werden nach Matrizen-Multiplikationsregel berechnet*/
for(i=0;i<=3;i++)
{
    for(j=0;j<=3;j++)
    {
      for(k=0;k<=3;k++)
      {
      c[i][j]+=a[i][k]*b[k][j];
      }
      /* Zeilenkomponenten der j-ten Zeile ausgeben/drucken */
      printf("%d   ", c[i][j]);
    }
    /* Zeilenvorschub */
    printf("\n\n");
}
/* Rücksprung / Ende */
return 0;
}

No comments:

Post a Comment