как умножить матрицы разных размеров в с - PullRequest
0 голосов
/ 05 марта 2011

Я ищу способ умножения матрицы 2x1 и 2x2, но мой код не работает почти каждый раз, и даже когда он работает, мне приходится вставлять числа в код. Это не работает, если я пытаюсь попросить цифры, когда я запускаю код

Вот мой код:

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

int main(void)  
{  
  unsigned int a[1][2],b[2][2],c[2][1], i=0, j=0, k=0;  
  printf("-=Program to Multiply two Matrices=-");  


//--------------------------------------------------------------------  

 printf("\nEnter the values of Matrix A: \n");  

  for(i=0;i<1;i++)  
    {  
      for(j=0;j<2;j++)  
        {  
         // printf("\n"); 
          scanf("%d",&a[i][j]);  
        }  
     }  
   printf("\nMatrix A: ");  
   for(i=0;i<1;i++)  
    {  
      printf("\n");  
      for(j=0;j<2;j++)  
        {  
          printf(" ");  
          printf("%d",a[i][j]);  
        }  
     }  
//----------------------------------------------------  

printf("\nEnter the values of Matrix B: \n");  
  for(i=0;i<2;i++)  
    {  
      for(j=0;j<2;j++)  
        {  
         // printf("\n");  
          scanf("%d",&b[i][j]);  
        }  
     }  
   printf("\nMatrix B: ");  
   for(i=0;i<2;i++)  
    {  
      printf("\n");  
      for(j=0;j<2;j++)  
        {  
          printf(" ");  
          printf("%d",b[i][j]);  
        }  
     }  

//--------------------------------------------------------  

  printf("\n\nMultiplication of matrices A and B is : \n\n");  
  for(i=0;i<2;i++)  
   {  
     for(j=0;j<2;j++)  
       {  
          c[i][j]=0;  
          for(k=0;k<1;k++)  
            {  
        c[i][j]=c[i][j]+(a[i][k]*b[k][j]);  
            }  
       }  
   }  
  printf("\nMatrix C (Resultant Matrix): ");  
    for(i=0;i<2;i++)  
    {  
      printf("\n");  
      for(j=0;j<1;j++)  
        {  
          printf(" ");  
          printf("%d",c[i][j]);  
        }  
     }  
printf("\n");  
  return 0;  
}  

Ответы [ 2 ]

1 голос
/ 05 марта 2011

Базовая концепция умножения матриц: 1-я матрица столбца должна быть равна Строка 2-й матрицы

Пример:

// действителен, поскольку столбец A равен строке B, т.е. 2

Матрица A = 1 X 2
Матрица B = 2 X 2

// Недействительно (ваш случай)
Матрица A = 2 X 1
Матрица B = 2 X 2

Matrix Multiplication image

0 голосов
/ 28 января 2014

, если речь идет о умножении матриц, это возможно только в том случае, если количество столбцов первой матрицы совпадает с количеством строк во второй матрице, поэтому нет смысла делать это, и вся концепция неверна

...