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;
}