Lập trình căn bản C: Thao tác mảng 2 chiều bằng ví dụ các phép toán trên ma trận

#include <conio.h>
#include <stdio.h>
#define max 100


/*Hàm nhập ma trận hệ số*/

void
NhapMaTran(float A[max][max], int m, int n, char ch) {
for
(int i = 0; i<m; i++)
for
(int j = 0; j<n; j++) {
printf("%c[%d][%d] = ",ch,i,j);
scanf("%f",&A[i][j]);
}
}

/* Hàm xuất ma trận*/

void
XuatMaTran(float A[max][max], int m, int n) {
for
(int i=0 ; i<m; i++){
printf("\n");
for
(int j=0 ; j<n; j++)
printf("%-4g",A[i][j]);
}
}


/*C = A+B*/

void
CongMaTran(float A[max][max], float B[max][max], float C[max][max], int m, int n) {
for
(int i = 0; i<m; i++)
for
(int j = 0; j<n; j++)
C[i][j] = A[i][j]+B[i][j];
}

/*A cap mxn * B cap nxp = C cap mxp*/

void
NhanMaTran(float A[max][max],float B[max][max], float C[max][max],int m,int n,int p){
for
(int i = 0; i<m; i++)
for
(int k = 0; k<p; k++) {
C[i][k]=0;
for
(int j = 0; j<n; j++)
C[i][k] = C[i][k]+A[i][j]*B[j][k];
}
}

/*Chuong trinh chinh*/

int
main() {
int
m,n,p;
float
A[max][max],B[max][max],C[max][max],D[max][max];
printf("Nhap m = ");
scanf("%d",&m);
printf("Nhap n = ");
scanf("%d",&n);
printf("Nhap p = ");
scanf("%d",&p);
printf("Nhap ma tran A cap %d x %d \n",m,n);
NhapMaTran(A,m,n,'A');
printf("Nhap ma tran B cap %d x %d \n",m,n);
NhapMaTran(B,m,n,'B');
printf("Nhap ma tran B cap %d x %d \n",n,p);
NhapMaTran(C,n,p,'C');
printf("\nMa tran A\n");
XuatMaTran(A,m,n);
getch();
printf("\nMa tran B\n");
XuatMaTran(B,m,n);
getch();
printf("\nMa tran C\n");
XuatMaTran(C,n,p);
getch();
printf("\nMa tran D = A+B\n");
CongMaTran(A,B,D,m,n);
XuatMaTran(D,m,n);
getch();
printf("\nMa tran D = A*B\n");
NhanMaTran(A,C,D,m,n,p);
XuatMaTran(D,n,p);
getch();
return
0;
}

Bài liên quan

Bài liên quan