Code C\C++: Chữa bài tập mảng hai chiều (10-01-13)

//----------------------------------------------------

BÀI TẬP MẢNG 2 CHIỀU
  Viết các hàm thực hiện:
- Nhập vào 2 ma trận vuông chứa số nguyên A,B có kích thước n ( 7>n>3)
- Tính ma trận tổng C=A+B, In ma trận C
- Tính tổng đường chéo chính của ma trận C
- In ra vị trí các số nguyên tố có trong ma trận C
- Sắp xếp hàng của ma trận C theo thứ tự tăng dần
- Tính tổng các cột của ma trận C
- Kiểm tra tính đối xứng của ma trận C


//----------------------------------------------

#include<stdio.h>
#include<conio.h>

#define Max 6 // khai bao hang (const)
#define Min 4

int a[Max][Max],b[Max][Max],c[Max][Max];
int n;

// ham nhap
void Nhap(){

 // nhap n
 printf("\n Nhap kich thuoc ma tran:\n");
 do{
printf("\n n= ");
scanf("%d",&n);
if(n<Min||n>Max)
printf("\n Nhap lai n");

 }while(n<Min||n>Max);

 // nhap ma tran a
 printf("\n Nhap ma tran a:\n");
 int i,j;
 for(i=0;i<n;i++)
for(j=0;j<n;j++)
 {
printf("\n a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
 }

// nhap ma tran b
 printf("\n Nhap ma tran b:\n");

 for(i=0;i<n;i++)
for(j=0;j<n;j++)
 {
printf("\n b[%d][%d]=",i,j);
scanf("%d",&b[i][j]);
 }
}

// In ma tran
void InMT(){
int i,j;
printf("\n Ma tran A: \n");
for (i=0;i<n;i++){
for (j=0;j<n;j++)
printf("%d\t",a[i][j]);
printf("\n");
}

printf("\n Ma tran B: \n");
for (i=0;i<n;i++){
for (j=0;j<n;j++)
printf("%d\t",b[i][j]);
printf("\n");
}

}
// Tinh ma tran tong
void MT_Tong(){
// tinh tong
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
c[i][j]=a[i][j]+b[i][j];

// in ma tran tong
printf("\n Ma tran tong C: \n");
for (i=0;i<n;i++){
for (j=0;j<n;j++)
printf("%d\t",c[i][j]);
printf("\n");
}
}

// Tong duong cheo chinh
void TongDuongCheoChinh(){
int i,j, tong=0;
for (i=0;i<n;i++)
tong=tong+c[i][i];

printf("\n Tong duong cheo chinh: %d",tong);

}
// Kiem tra so nguyen to
int TestNT(int k){
for(int i=2;i<k;i++)
if (k%i==0) return 0; // khong phai so nguyen to
return 1; // la so nguyen to

}
// In ra vi tri so nguyen to trong C
void InViTriSNT(){
int i,j;
printf("\n Vi tri xuat hien cac so nguyent to: \n");
for (i=0;i<n;i++)
for (j=0;j<n;j++)
if (TestNT(c[i][j])==1) printf("[%d][%d]; ",i,j);
}

// Sap xep hang tang dan
void SapXepHang(){
int i,j,k;
for (i=0;i<n;i++)
for (j=0;j<n-1;j++)
 for(k=j+1;k<n;k++)
if (c[i][j]>c[i][k])
 {
int t=c[i][j]; c[i][j]=c[i][k]; c[i][k]=t; // doi cho
 }
// in ma tran tong
printf("\n Sap xep ma tran C tang theo hang: \n");
for (i=0;i<n;i++){
for (j=0;j<n;j++)
printf("%d\t",c[i][j]);
printf("\n");
}
}

// Main
int main(){
Nhap();
InMT();
MT_Tong();
TongDuongCheoChinh();
InViTriSNT();
   SapXepHang();

getch();
return 0;
}