Trang chủLập trìnhLập trình C/C++Kiểm tra mảng 2 chiều đối xứng trong lập trình C/C++

Kiểm tra mảng 2 chiều đối xứng trong lập trình C/C++

Đâ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]

0 0 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN
Đăng ký nhận thông báo
Thông báo email khi
guest
0 Bình luận
Không thể gửi email
Phản hồi nội tuyến

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?


0
Giáo sư! có thể ném gạch bên dưới nhé!x
()
x