Em không biết sai chỗ nào mong các bác chỉ bảo ạ, em cảm ơn trước ạ.
Xây dựng chương trình thứ 1: nhập 2 ma trận A kích thươc mxn, ma trận B kích thước nxk. Ghi thông tin 2 ma trận vao file mt.dat
Chương trình 2: đọc file mt.dat để được thông tin 2 ma trận A và B sau đó tính tích 2 ma trận và ghi bổ sung ma trận C = A x B vào cuối file
đồng thời in 3 ma trận ra màn hình.
Code:
#include<stdio.h>
#include<conio.h>
void rfile(int A[10][10],int n,int B[10][10],int m,int tb[]){
FILE *fp;
fp = fopen("ma tran.dat","rt");
int i,j;
if(fp==NULL){
printf("\nTep khong ton tai.");
getch();
exit(1);
}
fgets(tb,50,fp);
fscanf(fp,"%d%d",&n,&m);
fgets(tb,50,fp);
for(i=0; i<n;i++)
{
for(j=0; j<m;j++)
{
fscanf(fp,"%d", &A[i][j]);
}
fgets(tb,50,fp);
}
fgets(tb,50,fp);
for(i=0; i<n;i++)
{
for(j=0; j<m;j++)
{
fscanf(fp,"%d", &B[i][j]);
}
fgets(tb,50,fp);
}
fclose(fp);
}
void tichmatrix(int A[10][10],int n,int B[10][10],int m){
FILE *fp;
fp = fopen("ma tran.dat","at");
int C[20][20];
if(fp==NULL){
printf("\nTep khong ton tai.");
getch();
exit(1);
}
fprintf(fp,"Ma tran C = A*B\n");
int i, j;
for(i=0; i<n;i++)
{
for(j=0; j<m;j++)
{
C[i][j]+=A[i][j]*B[i][j];
fprintf(fp,"%3d ", C[i][j]);
}
fprintf(fp,"\n");
}
fclose(fp);
}
void main()
{
FILE *fp;
int n, m, i, j, A[10][10],B[10][10];
char tb[50];
fp = fopen("ma tran.dat", "wt");
fprintf(fp,"Ma tran A\n");
printf("\nNhap so hang, cot cua ma tran:");
scanf("%d %d", &n, &m);
fprintf(fp, "Kich thuoc %dx%d\n", n, m);
for(i=0; i<n;i++)
{
for(j=0; j<m;j++)
{
printf("\nNhap phan tu = ");
scanf("%d", &A[i][j]);
fprintf(fp,"%3d ", A[i][j]);
}
fprintf(fp,"\n");
}
fprintf(fp,"Ma tran B \n");
printf("\nNhap ma tran B");
for(i=0; i<n;i++)
{
for(j=0; j<m;j++)
{
printf("\nNhap phan tu = ");
scanf("%d", &A[i][j]);
fprintf(fp,"%3d ", A[i][j]);
}
fprintf(fp,"\n");
}
fclose(fp);
printf("\nDa lap tep xong.");
rfile(A,n,B,m,tb);
tichmatrix(A,n,B,m);
getch();
}