이번 포스팅에서는 2개의 정수 배열을 비교하는 코드를 작성해보았습니다.
반복적으로 사용되어야 하는 부분은 모두 함수로 처리를 하여 main함수 내의 가독성을 최대한 높이고자 하였습니다.
| 수정 전 코드(오류 있어요)
> 댓글 달아주신거 보고서야 알았습니다. 해당 코드에 오류가 있다는 걸, 아래의 코드 실행시 댓글의 내용처럼 해당 코드는 바로 리턴을 해버리면서 판단 오류가 발생합니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 10
int array_print(int a[], int size); // 배열 출력 함수
int array_equal(int a[], int b[], int size); // 배열 비교 함수
int main(void)
{
srand((unsigned)time(NULL));
int a[SIZE] = { 0, 0, 0 };
int b[SIZE] = { 1, 0, 0 };
int i, result;
// size = sizeof(a) / sizeof(a[0]); // 배열의 개수 계산
array_print(a, SIZE);
array_print(b, SIZE);
result = array_equal(a, b, SIZE);
if (result == 0)
{
printf("2개의 배열은 다름");
}
else
{
printf("2개의 배열은 같음");
}
return 0;
}
int array_print(int a[], int size)
{
int i;
for (i = 0; i < SIZE; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
int array_equal(int a[], int b[], int size)
{
int i;
for (i = 0; i < SIZE; i++)
{
if (a[i] != b[i])
{
return 0;
break;
}
else
{
return 1;
}
}
}
| 수정 후 코드(오류 수정)
> 오류를 해결하고자 continue 키워드를 사용해주었습니다. 서로 값이 같은 경우 다음 값 비교로 넘어가도록 말이죠. 모든 비교가 정상적으로 끝나면 그제서야 1을 리턴해줍니다. 또한, 배열 출력 함수에서 아무런 값을 리턴하지 않는데 int형으로 선언했더라구요. 이 부분도 void로 수정해주었습니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 10
void array_print(int a[], int size); // 배열 출력 함수
int array_equal(int a[], int b[], int size); // 배열 비교 함수
int main(void)
{
srand((unsigned)time(NULL));
int a[SIZE] = { 1, 1, 0 };
int b[SIZE] = { 1, 1, 1 };
int result;
// size = sizeof(a) / sizeof(a[0]); // 배열의 개수 계산
array_print(a, SIZE);
array_print(b, SIZE);
printf("\n");
result = array_equal(a, b, SIZE);
if (result == 0)
{
printf("2개의 배열은 다름\n");
}
else
{
printf("2개의 배열은 같음\n");
}
return 0;
}
void array_print(int a[], int size)
{
int i;
for (i = 0; i < SIZE; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
int array_equal(int a[], int b[], int size)
{
int i;
for (i = 0; i < SIZE; i++)
{
if (a[i] != b[i])
{
return 0;
break;
}
else
{
continue;
}
return 1;
}
}
그럼 오늘도 즐거운 코딩!
반응형
'코딩 | 개념 정리 > C' 카테고리의 다른 글
[C언어] 포인터와 배열에서 포인터의 장점은? (0) | 2021.04.29 |
---|---|
[C언어] 배열 요소 복사하기 (0) | 2021.04.29 |
[C언어] 배열로 최대값, 최소값 출력하기 (0) | 2021.04.28 |
[C언어] 배열로 월별 일수 출력하기 (0) | 2021.04.28 |
[C언어] 피보나치 수열 구하기 (0) | 2021.04.23 |