67 lines
1.2 KiB
C
67 lines
1.2 KiB
C
#include<stdio.h>
|
|
#include<stdlib.h>
|
|
int **read_matrix(int n,int m)
|
|
{
|
|
int **a;
|
|
a=(int**)malloc(n*sizeof(int*));
|
|
for(int i=0;i<n;i++)
|
|
{
|
|
*(a+i)=(int*)malloc(m*sizeof(int));
|
|
}
|
|
for(int i=0;i<n;i++)
|
|
{
|
|
for(int j=0;j<m;j++)
|
|
{
|
|
scanf("%d",*(a+i)+j);
|
|
}
|
|
}
|
|
return a;
|
|
}
|
|
int print_matrix(int **a,int n,int m)
|
|
{
|
|
for(int i=0;i<n;i++)
|
|
{
|
|
for(int j=0;j<m;j++)
|
|
{
|
|
printf("%d ",*(*(a+i)+j));
|
|
}
|
|
printf("\n");
|
|
}
|
|
return 0;
|
|
}
|
|
int **matrix_multiply(int **a,int **b,int n,int m,int k)
|
|
{
|
|
int **c;
|
|
c=(int**)malloc(n*sizeof(int*));
|
|
for(int i=0;i<n;i++)
|
|
{
|
|
*(c+i)=(int*)malloc(k*sizeof(int));
|
|
}
|
|
for(int i=0;i<n;i++)
|
|
{
|
|
for(int j=0;j<k;j++)
|
|
{
|
|
*(*(c+i)+j)=0;
|
|
for(int l=0;l<m;l++)
|
|
{
|
|
*(*(c+i)+j)+=*(*(a+i)+l)**(*(b+l)+j);
|
|
}
|
|
}
|
|
}
|
|
return c;
|
|
}
|
|
int main()
|
|
{
|
|
int n,m,k;
|
|
scanf("%d",&n);
|
|
scanf("%d",&m);
|
|
scanf("%d",&k);
|
|
int **a;
|
|
a=read_matrix(n,m);
|
|
int **b;
|
|
b=read_matrix(m,k);
|
|
int **c;
|
|
c=matrix_multiply(a,b,n,m,k);
|
|
print_matrix(c,n,k);
|
|
return 0;
|
|
} |