Kiểm tra mảng có đối xứng hay không

7
17368

Bài toán: Kiểm tra mảng có đối xứng hay không

Input:  mảng a có n phần tử

Xử lý: duyệt mảng, so sánh phần tử đầu và phần tử cuối của mảng có bằng nhau không, nếu bằng thì tiếp tục đến phần tử đầu +1 và phần tử cuối -1, đến giữa mảng Nếu so sánh mà có phần tử nào đó không bằng nhau thì hàm trả về là -1, rồi thoát khỏi vòng lặp

Nếu so sánh bằng nhau hết thì hàm trả về là 1

Output: mảng đối xứng là 1, mảng không đối xứng là -1

Hàm Kiểm tra mảng đối xứng

int KiemTraMangDoiXung(int a[], int n)
{
	for(int i = 0; i < n/2; i++)
	{
		if(a[i] != a[n - i - 1])
		{
			return -1;
			break;
		}
	}
	return 1;
}

Chương trình

#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#define MAX 100
void nhapmang(int a[], int &n);
void xuatmang(int a[], int n);
int KiemTraMangDoiXung(int a[], int n);
void main()
{
	int a[MAX],n;
	nhapmang(a,n);
	printf("\nNoi dung cua mang");
	xuatmang(a,n);
	if(KiemTraMangDoiXung(a,n) == 1)
		printf("\nMang doi xung ");
	else
		printf("\nMang khong doi xung ");
	printf("\nChuc cac ban hoc tot");
	getch();
}
void nhapmang(int a[], int &n)
{
	do
	{
		printf("\nSo phan tu trong mang ");
		scanf("%d",&n);
	}while(n<=0 && n>100);
	for(int i=0 ; i<n ; i++ )
	{
		printf("\nSo phan tu a[%d] la: ",i);
		scanf("%d",&a[i]);
	}
}
void xuatmang(int a[], int n)
{
	for(int i=0 ; i<n ; i++ )
		printf("%4d",a[i]);
}
int KiemTraMangDoiXung(int a[], int n)
{
	for(int i = 0; i < n/2; i++)
	{
		if(a[i] != a[n - i - 1])
		{
			return -1;
			break;
		}
	}
	return 1;
}

Mình chia sẽ code này đê các bạn tham khảo các vấn đề tương tự. Tuy nhiên các bạn nên tự làm lại, đừng nên copy. Nếu gặp vấn đề gì khó khăn, hoặc thắc mắc gì, các bạn có thể đặt câu hỏi ở cuối bài. Mình sẽ giải đáp.

Chúc bạn thành công!

Xem thêm:Đếm số phần tử x

7 COMMENTS

This site uses Akismet to reduce spam. Learn how your comment data is processed.