Computerhilfen.de Logo
Forum
Tipps
News

Matrizenmultiplikation forschleifen

#include <stdio.h>
#include <stdlib.h>

int main()
{   int m1,n1,m2,n2,sum=0,k;

    //Gre Matrix A
    printf ("Wieviele Zeilen soll Matrix A haben:");
    scanf("%i",&m1);
    printf("\nWieviele Spalten soll  Matrix A haben:");
    scanf("%i",&n1);

    //Gre Matrix B
    printf ("\nWieviele Zeilen soll Matrix B haben:");
    scanf("%i",&m2);
    printf("\nWieviele Spalten soll  Matrix B haben:");
    scanf("%i",&n2);

    int A[m1+1][n1+1],B[m2+1][n2+1],i=1,j=1,C[m1+1][n2+1];
//Matrix A init
for (j=0;j<m1;j++)
    {for (i=0;i<n1;i++)
   {printf("\nGeben Sie den Wert fur Matrix A Zeile%i/Spalte%i ein:",j+1,i+1);
    scanf("%i",&A[j]);}}
//Matrix B init
for (j=0;j<m2;j++)
    {for (i=0;i<n2;i++)
   {printf("\nGeben Sie den Wert fur Matrix B Zeile%i/Spalte%i ein:",j+1,i+1);
    scanf("%i",&B[j]);}}


//Matrix A ausgeben
printf("\nSie haben Matrix A wiefolgt initialisiert:\n");
for(j=0; j<m1; j++) {

   for(i=0; i<n1; i++) {
        printf(" %i  ", A[j]);
   }
      printf("\n");
}
//Matrix B ausgeben
printf("\nSie haben Matrix B wiefolgt initialisiert:\n");
for(j=0; j<m2; j++) {

   for(i=0; i<n2; i++) {
       printf(" %i  ", A[j]);
   }

   printf("\n");
}

//case abfrage ob Multiplizieren oder Addieren
int fall;
printf("\n Wollen Sie Ihre eingegebenen Matrizen Addieren geben Sie 1 ein:\n Wollen Sie Ihre eingegebenen Matrizen Multiplizieren geben sie 2 ein:\n");
scanf("%i",&fall);




switch (fall)
{//fall 1 Addieren
    case 1:
 if (m1==m2&& n1==n2&& fall==1)
 {
     for (j=0;j<m1;j++)
        {for (i=0;i<n1;i++)
        {A[j]=A[j]+B[j];
        }}
        printf("\nIhre Matrizen wurden Addiert und es fuehrte zu folgendem Ergebnis:\n");
        for(j=0; j<m1; j++)
{

   for(i=0; i<n1; i++) {
      printf(" %i  ", A[j]);

   }
      printf("\n");
}
 }

 else
    printf("\nEine Addition ist nicht mglich da Ihre Matrizen unterschiedlich gro sind!");
break;

//fall 2 Multiplizieren
    case 2:
        if(n1==m2)
        {  for (j=0;j<m2;j++)
           {for (k=0;k<n2;k++)
            {for (i=0;i<n1;i++)
            sum=sum+A[j]*B[j+k];}
               C[j][k]=sum;
           }
           printf("\nDie Multiplikation ergab folgendes Ergebnis:\n");
            for(j=0; j<m1; j++) {

            for(i=0; i<n2; i++) {
            printf(" %i  ", C[j]);
                }

            printf("\n");
}
}
        else
        printf("\nEine Multiplikation n ist nicht mglich da die Spaltenanzahl von Matrix A nicht mit der Zeilenanzahl von Matrix B bereinstimmt!");
        break;

        default : printf("Porgrammfehler");
}








    return 0;


}



Das Problem dass ich habe ist bei case 2 die multiplikation funktioniert nicht.


Antworten zu Matrizenmultiplikation forschleifen:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

was heist das funktioniert nicht du musst schon bedenken dass man spalte mit zeile malnimmt und das must du entsprechend in den variablen ueber die schleifen einproggen

http://statistik.wu-wien.ac.at/~leydold/MOK/HTML/node17.html

a11*b11
a12*b21
a13*b31

a21*b12
a22*b22
a23*b32

c31*b13
c32*b23
c33*b33

//fall 2 Multiplizieren
    case 2:
        if(n1==m2)
        {  for (j=0;j<m1;j++)
           {for (k=0;k<n2;k++)
            {for (i=0;i<n1;i++)
            sum=sum+A[j]*B[k];

               C[j][k]=sum;
               sum=0;}
           }
           printf("\nDie Multiplikation ergab folgendes Ergebnis:\n");
            for(j=0; j<m1; j++) {

            for(i=0; i<n2; i++) {
            printf(" %i  ", C[j]);
                }

            printf("\n");
}
}
        else
        printf("\nEine Multiplikation n ist nicht mglich da die Spaltenanzahl von Matrix A nicht mit der Zeilenanzahl von Matrix B bereinstimmt!");
        break;

        default : printf("Porgrammfehler");
}

habs lösen können hatte sum =0 vergessen in der k schleife

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

sum also summe mhhh du willst malnehmen und nich plus  [???]


« lacht nicht! (VBA Grundwissen?!)Programm das Binärzahlen überprüft »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!