Họ và tên: Trịnh Mạnh Cường

Lớp: Tin Pháp –k53. MSSV: 20080408

Bài Tập Tuần 1
Thực hiện chương trình nhân hai ma trận cấp n*n sử dụng mảng cấp phát tĩnh và
cấp phát động

Mảng cấp phát tĩnh:
# include <stdio.h>
# include <conio.h>
float A[100][100];
float B[100][100];
float kq[100][100];
int kich_thuoc;
/*****************Nhap hai ma tran*********************************/
void nhap(bool _flag)
{
if(_flag==true)
{
for(int i=0;i<kich_thuoc;i++)
for(int j=0;j<kich_thuoc;j++)
{
printf("A[%d][%d]=",i+1,j+1);
scanf("%f",&A[i][j]);
}
}

else
{
for(int i=0;i<kich_thuoc;i++)
for(int j=0;j<kich_thuoc;j++)
{

A[i][j]).j<kich_thuoc. } } /*************Thuc hien tinh toan*************************/ void tinh() { for(int i=0.j++) { kq[i][j]=0.i+1.i++) { for(int j=0. for(int i=0.i<kich_thuoc. } printf("\n \n").j<kich_thuoc. for(int k=0.j<kich_thuoc.&B[i][j]). scanf("%f".2f ". printf("Mang B:\n").2f ".B[i][j]).i<kich_thuoc. for(int i=0.i++) { for(int j=0.i<kich_thuoc.j+1).j++) printf(" %4.i++) for(int j=0. } . printf("\n"). printf("\n").k++) kq[i][j]+=A[i][k]*B[k][j].printf("B[%d][%d]=".k<kich_thuoc. } } printf("\n"). } /************In du lieu dau vao**************************/ void in_du_lieu() { printf("Mang A:\n").j++) printf(" %4.

kq[i][j]).&kich_thuoc). int kich_thuoc.h> float **A. // cap phat bo nho void cap_phat() { A= new float* [kich_thuoc]. scanf("%d".i++) { for(int j=0.i<kich_thuoc. float **kq. nhap(false). printf("\n"). in_kq().2f ". tinh(). for(int i=0. return 0. nhap(true).j<kich_thuoc. float **B. printf("Nhap kich thuoc ma tran:"). in_du_lieu(). } Sử dụng mảng cấp phát động dùng phương pháp con trỏ tới con trỏ: # include <stdio. . } } int main() { printf("Chuong trinh nhan 2 ma tran kich thuoc [n*n] \n").j++) printf(" %4.h> # include <conio.} /******************In ket qua*********************************/ void in_kq() { printf("\nMang ket qua la:\n").

} } // nhap du lieu voi tham so flag void nhap(bool flag) { if(flag==true) { for (int i=0.A[i][j]).i<kich_thuoc.j++) { printf("A[%d][%d]= ".j+1).i++) { for(int j=0. } } else { for (int i=0.i++) for(int j=0. scanf("%f".i<kich_thuoc.2f ".j+1). kq[i]=new float [kich_thuoc].B= new float* [kich_thuoc].j++) { printf("B[%d][%d]= ". for(int i=0.&B[i][j]). for(int i=0.i+1.i++) for(int j=0.j<kich_thuoc.j<kich_thuoc.&A[i][j]). kq=new float* [kich_thuoc]. } } } // in du lieu ra man hinh de kiem tra void in_du_lieu() { printf("Mang A:\n").i+1. scanf("%f".i<kich_thuoc. B[i]= new float [kich_thuoc].i++) { A[i]= new float [kich_thuoc].j<kich_thuoc. .i<kich_thuoc.j++) printf(" %4.

i<kich_thuoc. printf("Mang B:\n").j<kich_thuoc. for(int i=0.k++) kq[i][j]+=A[i][k]*B[k][j].B[i][j]).2f ".i++) { for(int j=0.k<kich_thuoc.kq[i][j]).j<kich_thuoc.i++) for(int j=0.j++) printf(" %4.2f ". } } void xoa_bo_nho() { .j++) printf(" %4. for(int k=0. } printf("\n \n").j++) { kq[i][j]=0.j<kich_thuoc.i<kich_thuoc.i++) { for(int j=0. printf("\n"). } } /*************Thuc hien tinh toan*************************/ void tinh() { for(int i=0.printf("\n"). for(int i=0. printf("\n").i<kich_thuoc. } } // in ket qua void in_kq() { printf("\nMang ket qua la:\n").

} Mảng cấp phát động dùng phương pháp bộ nhớ động: # include <stdio. in_kq(). } int main() { // nhap tham so printf("Nhap vao kich thuoc cua ma tran: "). nhap(false).h> # include <conio.h> float *A.&kich_thuoc). printf("\n"). return 0. } // nhap du lieu voi tham so flag void nhap(bool flag) { . scanf("%d". tinh(). float *kq. int kich_thuoc. cap_phat(). delete[]kq. xoa_bo_nho(). // cap phat bo nho void cap_phat(float **A) { *A=new float[kich_thuoc*kich_thuoc].delete[]A. in_du_lieu(). float *B. nhap(true). delete[]B.

i++) { for(int j=0.i++) for(int j=0. } printf("\n \n"). printf("\n"). } .i<kich_thuoc.i+1.i++) { for(int j=0.i+1. } } } // in du lieu ra man hinh de kiem tra void in_du_lieu() { printf("Mang A:\n").i<kich_thuoc.j<kich_thuoc.j<kich_thuoc.2f ".j++) { printf("B[%d][%d]= ".2f ".j+1). printf("Mang B:\n").j++) printf(" %4. for(int i=0.B[i*kich_thuoc+j]).A[i*kich_thuoc+j]).&A[i*kich_thuoc+j]). scanf("%f". } } else { for (int i=0.i<kich_thuoc.&B[i*kich_thuoc+j]). scanf("%f". printf("\n").j+1).j++) { printf("A[%d][%d]= ".i++) for(int j=0. for(int i=0.j<kich_thuoc.i<kich_thuoc.if(flag==true) { for (int i=0.j++) printf(" %4.j<kich_thuoc.

for(int i=0.k<kich_thuoc. cap_phat(&B). printf("\n").k++) kq[i*kich_thuoc+j]+=A[i*kich_thuoc+k]*B[k*kich_thuoc+j]. scanf("%d".i++) for(int j=0.j<kich_thuoc.i<kich_thuoc.i++) { for(int j=0.&kich_thuoc). } } void xoa_bo_nho() { delete[]A. cap_phat(&kq). delete[]B.kq[i*kich_thuoc+j]).2f ".j++) printf(" %4. } int main() { // nhap tham so printf("Nhap vao kich thuoc cua ma tran: "). cap_phat(&A).} /*************Thuc hien tinh toan*************************/ void tinh() { for(int i=0. .i<kich_thuoc. } } // in ket qua void in_kq() { printf("\nMang ket qua la:\n").j++) { kq[i*kich_thuoc+j]=0. delete[]kq.j<kich_thuoc. for(int k=0.

tinh().nhap(true). printf("\n"). return 0. in_du_lieu(). in_kq(). nhap(false). } Kết quả tính toán: Với ma trân kích thước 3*3: . xoa_bo_nho().

Với ma trận kích thước 5*5: .

Ma trận với kích thước 7*7: .

Sign up to vote on this title
UsefulNot useful