30/09/2018, 16:28
Bài tập về tích 2 ma trận
em đang học về con trỏ và em nhập được vào 2 ma trận A và B nhưng ma trận tích thì nó không in ra mong anh chị giúp
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
void nhap(int **a,int m,int n)
{
int i,j;
int tam;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("a[%d][%d]",i,j);
scanf("%d",&tam);
a[i][j]=tam;
}
}
}
void in(int **a,int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)printf("%2d",a[i][j]);
printf("
");
}
}
int main()
{
int **a,**b,**c;
int m,n,p;
int i,j,k;
do
{
printf("nhap vao so hang cua ma tran a");
scanf("%d",&m);
printf("nhap vao so cot cua ma tran a");
scanf("%d",&n);
}
while(m<=0 || n<=0);
a=(int **)malloc(m*sizeof(int *));
for(i=0;i<n;i++)a[i]=(int *)malloc(n*sizeof(int));
nhap(a,m,n);
printf("ma tran A da nhap vao
");
in(a,m,n);
do
{
printf("nhap vao so hang cua mtran b");
scanf("%d",&n);
printf("nhap vao so cot cua mtran b");
scanf("%d",&p);
}
while(n<=0 || p<=0);
b=(int **)malloc(n*sizeof(int *));
for(j=0;j<p;j++)b[j]=(int *)malloc(p*sizeof(int));
nhap(b,n,p);
printf("ma tran B da nhap vao
");
in(b,n,p);
c=(int **)malloc(m*sizeof(int *));
for(i=0;i<p;i++)c[i]=(int *)malloc(p*sizeof(int));
printf("tich 2 ma tran la
");
for(i=0;i<m;i++)
{
for(j=0;j<p;j++)
{
c[i][j]=0;
for(k=0;k<n;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
printf("%2d",c[i][j]);
}
//printf("ma tran tich la
");
/* for(i=0;i<m;i++)
{
for(j=0;j<p;j++) printf("%2d",c[i][j]);
printf("
");
}*/
free(a);
for(i=0;i<n;i++)free(a[i]);
free(b);
for(j=0;j<p;j++)free(b[j]);
free(c);
for(i=0;i<p;i++)free(c[i]);
}
Link: http://codepad.org/1aRvUHm3
Bài liên quan
em lam vay ma nhung n khong ra.mong a giup
Sáng nay dạo ngang mục này, thấy hay hay nên cũng xin đóng góp vài đoạn code C.
Note: mình build trên gcc nhé