Đây là một dạng bài tập đơn giản và tương đối cơ bản giúp cho việc luyện tập code lập trình C/C++ mang lại hiệu quả rất tốt.
Kiểm tra mảng 2 chiều đối xứng trong lập trình C/C++
Thế nào là mảng 2 chiều đối xứng thì với tất cả các phần tử trong mảng 2 chiều mà đối xứng nhau thì sẽ luôn bằng nhau. Hay nói cách khác là mọi A[i][j] = A[j][i].
Vậy làm sao để kiểm tra được mảng 2 chiều đối xứng, ý tưởng sẽ rất đơn giản thôi. Ta duyệt 2 vòng lặp i, j để duyệt hết được tất cả các phần tử trong mảng 2 chiều, nếu trong trường hợp ta gặp 1 cặp A[i][[j] mà khác với A[j][[i] thì kết luận luân là mảng không đối xứng. Ngược lại nếu ta duyệt hết tất cả các phần tử mà không gặp cặp A[i][[j] và A[j][[i] nào khác nhau thì lúc đó mảng là đối xứng nhau.
Ta có thể viết chương trình C như sau:
#include<stdio.h>
#include<math.h>
#define maxm 100
void nhap(int a[][maxm], int n, int m)
{
int i, j;
for(i=0;i < n;i++)
for(j=0;j< m;j++)
{
printf("A[%d][%d] = ",i,j);
scanf("%d",&a[i][j]);
}
}
void xuat(int a[][maxm],int n, int m)
{
int i, j;
for(i=0;i<n;i++)
{
for(j = 0;j<m; j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}
int doixung(int a[][maxm],int n, int m)
{
int i, j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i][j] != a[j][i]) return 0;
}
}
return 1;
}
int main()
{
int n, m;
printf("Nhap so hang: ");
scanf("%d", &n);
printf("Nhap so cot: ");
scanf("%d", &m);
int a[n][m];
nhap(a, n, m);
xuat(a,n, m);
if(doixung(a, n, m)==1)
{
printf(" =>Mang doi xung");
}
else
{
printf(" =>Mang khong doi xung");
}
}
Chuyển thành chương trình C++
#include <iostream>
#include<cmath>
#define maxm 100
#define maxn 100
using namespace std;
void nhap(int a[][maxm], int n, int m)
{
for(int i=0;i < n;i++)
for(int j=0;j< m;j++)
{
cout<<"A["<<i<<"]["<<j<<"]] = ";
cin>>a[i][j];
}
}
void xuat(int a[][maxm],int n, int m)
{
int i, j;
for(i=0;i<n;i++)
{
for(j = 0;j<m; j++){
cout<<a[i][j]<<" ";
}
cout<<"\n";
}
}
int doixung(int a[][maxm],int n, int m)
{
int i, j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i][j] != a[j][i]) return 0;
}
}
return 1;
}
int main()
{
int a[maxn][maxm];
int n, m;
cout<<"Nhap so hang: ";
cin>>n;
cout<<"Nhap so cot: ";
cin>>m;
nhap(a, n, m);
xuat(a,n, m);
if(doixung(a, n, m)==1)
{
cout<<" =>Mang doi xung";
}
else
{
cout<<" =>Mang khong doi xung";
}
}
Bạn chạy chương trình xem kết quả nhé
[Xem tất cả bài viết chủ đề C/C++ tại đây]