2x2-Matrix-Multiplikation

Ich versuche, ein Programm zu schreiben, berechnen Sie die Summe und das Produkt von zwei Matrizen, aber ich kann es nicht erhalten, das Produkt zu arbeiten. Die Summe ist in Ordnung. Ich benutze Visual Studio.

Hier ist mein Programm:

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

int main()
{
    float a[2][2], b[2][2], c[2][2], d[2][2], sum;
    int i,j,k;

    for(i = 0; i < 2; i++) {  
      for(j = 0; j < 2; j++) {  
        d[i][j] = 0;
      }
    }

    printf("Enter the elements of 1st matrix\n");
    /*
     * Reading two dimensional Array with the help of two for loop. If there
     * was an array of 'n' dimension, 'n' numbers of loops are needed for
     * inserting data to array.
     */   
    for (i = 0; i < 2; ++i)      
      for (j = 0; j < 2; ++j) {
        printf("Enter a%d%d: ", i + 1, j + 1);
        scanf("%f", &a[i][j]);
      }

    printf("\nEnter the elements of 2nd matrix\n");
    for (i = 0; i < 2; ++i)
      for (j = 0; j < 2; ++j) {
        printf("Enter b%d%d: ", i + 1, j + 1);
        scanf("%f", &b[i][j]);
      }

    printf("\nMatrix 1:\n");
    for (i = 0; i < 2; ++i)
      for(j = 0; j < 2; ++j) {
        printf("%.1f\t", a[i][j]);  
        if (j == 1)             /* To display matrix sum in order. */
          printf("\n");
      }
    printf("\nMatrix 2:\n");

    for(i = 0; i < 2; ++i)
      for(j = 0; j < 2; ++j) {
        printf("%.1f\t", b[i][j]);  
        if (j == 1)             /* To display matrix sum in order. */
           printf("\n");
      }

    for (i = 0; i < 2; ++i)
      for(j = 0; j < 2; ++j) {
        /* Writing the elements of multidimensional array using loop. */
        c[i][j]=a[i][j]+b[i][j];  /* Sum of corresponding elements of two arrays. */
      }
    printf("\nSum Of Matrix:\n");
    for (i = 0; i < 2; ++i)
      for(j = 0; j < 2; ++j) {
        printf("%.1f\t",c[i][j]);  
        if (j == 1)             /* To display matrix sum in order. */
          printf("\n");
      }

    for(i = 0 ; i < 2 ; i++) {  
      for(j = 0 ; j < 2 ; j++) {  
        sum = 0 ;  
        for(k = 0 ; k < 2 ; k++) {  
          sum = sum + a[i][k] * b[k][j];
          printf("a: %d; b: %d\n", a[i][k], b[k][j]);
          printf("%d", sum);
        }
        d[i][j]=sum;
      }  
    }  
    printf("\nThe multiplication matrix is : \n\n") ;  
    for(i = 0; i < 2; i++) {  
      for(j = 0; j < 2; j++) {  
        printf("%d \t", d[i][j]) ;  
      }  
      printf("\n") ;  
    } 

    system("PAUSE");
    return 0;
}

Hier ist die Ausgabe:

Matrix 1:
1.0     2.0
3.0     4.0

Matrix 2:
5.0     6.0
7.0     8.0

Sum Of Matrix:
6.0     8.0
10.0    12.0
a: 0; b: 1072693248
0a: 0; b: 1073741824
0a: 0; b: 1072693248
0a: 0; b: 1073741824
0a: 0; b: 1074266112
0a: 0; b: 1074790400
0a: 0; b: 1074266112
0a: 0; b: 1074790400
0
The multiplication matrix is :

0       0
0       0

Ich kann nicht sehen, wo das problem ist mit den beiden Matrizen A und B.

  • Gute Compiler warnen mis-matched-format-Bezeichner und Parameter wie in float sum; ... printf("%d", sum);. Sparen Sie Zeit, versichern Sie Ihr, dass der compiler Warnungen sind vollständig aktiviert, oder erwägen Sie, einen neuen compiler.
InformationsquelleAutor canibalimao | 2015-10-06
Schreibe einen Kommentar