본문 바로가기

C&C++_Basic/C_Function

C언어 사용자 정의함수 이용 일차원 배열의 동등함을 검사하여 그 결과를 리턴

  • 다음 배열 a와 b1, b2, b3에 대하여 각각 검사

int a[] = { 4, 7, 9, 3, 6 };

int b1[] = { 4, 7, 9, 3, 6 };

int b2[] = {4, 7, 9, 3, 7 };

int b3[] = { 4, 7, 9, 3 };

  • 함수int compare() 는 2개의 배열과 배열의 크기를 인자로 받고, 배열의 원소가 모두 같으면 1, 다르면 0을 리턴한다. ;
#include<stdio.h>

int compare(int *pa, int na, int *pb, int nb)
{
	if(na==nb)
	{
	for(int i=0;i<na;i++)
	{
	if(pa[i]!=pb[i])
	return 0;
	}
	return 1;
	}
	
	else
	return 0;
}
/*
만일 for(int i=0;i<na;i++) 
{
if (pa[i]==pb[i])
return 1;
else if (pa[i] != pb[i])
return 0;

이렇게 하면 안되는 이유 
만일 pa[0]=pb[0]
이면 결국 return 1; 하고 끝나는데
뒤에 요소들이 달라도
그것을 고려하지 않고, 
그냥 return 1이 나오게됨. 
}
*/

int main()
{
	int a[]={4,7,9,3,6};
	int b1[]={4,7,9,3,6};
	int b2[]={4,7,9,3,7};
	int b3[]={4,7,9,3};
	
	printf("a와 b1의 비교결과는 %d이다\n",compare(a,5,b1,5));
	printf("a와 b2의 비교결과는 %d이다\n",compare(a,5,b2,5));
	printf("a와 b3의 비교결과는 %d이다\n",compare(a,5,b3,5));
	
	return 0;
}