본문 바로가기
IT/기술(C,C++,JAVA)

c언어로 쉽게 만드는 합집합, 교집합, 차집합 간단 예제(코드포함)

by ghostzoominn 2020. 9. 24.

「 배열·반복문을 활용한 합집합, 교집합, 차집합 출력 」

언어를 공부하다보면 배열 및 반복문 파트에서 자주 출제되는 예제중 하나가 합집합, 교집합, 차집합을 구하는 프로그램입니다.

 

이러한 예제는 기본적인 입·출력을 바탕으로 배열에 대한 이해와 반복문, 조건문 등을 모두 활용해 볼 수 있는 좋은 예제입니다.

 

초보자도 쉽게 알 수 있도록 직관적이고 쉬운 코드로 작성하였으니, 참고하여 작성 해 보시기 바랍니다.

 

「 예제 문제 」

Q. 5개의 정수를 두 번 입력하여 A[5]와 B[5]에 저장한 후, A와 B의 합집합(A∪B), 교집 합(A∩B), 차집합(A-B)을 출력. 단, 동일한 수가 A에 여러 번 입력되지는 않음. (B도 마찬가지)

 

「 기본적인 변수선언 및 배열 입력 」

#include <stdio.h>

void main()
{
	int A[5];
	int B[5];
	int ans[10];
	int i;
	int j=0;
	int k = 5;

	printf("A 집합의 원소 5개 입력: ");
	
	for (i = 0; i < 5; i++)
		scanf_s("%d", &A[i]);
	
	printf("B 집합의 원소 5개 입력: ");
	for (i = 0; i < 5; i++)
		scanf_s("%d", &B[i]);

합집합, 차집합, 교집합을 구할 A,B 두 배열을 선언하고, 이에 들어갈 원소 5개를 입력 받습니다.

 

「 합집합 」

//합집합
	for (i = 0; i < 5; i++)
	{
		ans[i] = A[i];
	}

	for (j = 0; j < 5; j++)
	{
		for (i = 0; i < 5; i++)
		{
			if (B[j] == A[i])
				break;

			if (i == 4)
			{
				ans[k] = B[j];
				k++;
			}
		}
	}

	printf("A와B의 합집합: ");
	
	for (i = 0;i < k; i++)
		printf("%d ", ans[i]);

	printf("\n");

A와B 집합에 대하여 반복문을 통해 중복 된 값은 한 번만 출력되도록 코드를 구성하여 합집합을 구합니다.

「 교집합」

	//교집합

	k = 0;

	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 5; j++)
		{
			if (A[i] == B[j])
			{
				ans[k] = A[i];
				k++;
			}
		}
	}

	printf("A와B의 교집합: ");

	for (i = 0; i < k; i++)
		printf("%d ", ans[i]);

	printf("\n");

A와B 집합에 대하여 반복문을 통해 중복 된 값을 구한 뒤 출력되도록 코드를 구성하여 교집합을 출력합니다.

 

「 차집합 」

	//차집합

	k = 0;
	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 5; j++)
		{
			if (A[i] == B[j])
				break;

			if (j == 4)
			{
				ans[k] = A[i];
				k++;
			}
		}
	}

	printf("A와B의 차집합: ");

	for (i = 0; i < k; i++)
		printf("%d ", ans[i]);

	printf("\n");

}

A와B 집합에 대하여 반복문을 통해 중복된 값을 구한 뒤 차집합이 출력되도록 코드를 구성합니다.

 

아래는 해당 프로그램을 실행한 결과화면입니다.

 

합집합,교집합,차집합 프로그램

직관적으로 이해하실 수 있도록 코드를 구성하였으니, 천천히 읽어보신 후 직접 코드를 짜보시기 바랍니다.

 

전체 코드파일은 첨부해 두겠습니다.

arrayexample.cpp
0.00MB

 

댓글