#include <stdio.h>
main()
{
int a[15] = {0, };
int b[15] = {0, };
int hab[30] = {0, };
int gyo[15] = {0, };
int cha[15] = {0, };
int i, j, k, n = 0, m = 0, o = 0, exist = 0, ok = 0;
time_t t;
srand((unsigned)time(&t));
// 배열 a[] 값 설정
for (i = 0; i < 15; i++) {
a[i] = rand() % 30; // 난수 발생
for (j = 0; j < i; j++) {
if (a[i] == a[j]) { // 중복 배제
i--;
break;
}
}
}
// 배열 b[] 값 설정
for (i = 0; i < 15; i++) {
b[i] = rand() % 30;
for (j = 0; j < i; j++) {
if (b[i] == b[j]) {
i--;
break;
}
}
}
printf("배열 a[]\n");
for (i = 0; i < 15; i++) printf("%d ", a[i]);
printf("\n\n");
printf("배열 b[]\n");
for (i = 0; i < 15; i++) printf("%d ", b[i]);
printf("\n\n");
// 교집합
for (i = 0; i < 15; i++) {
for (j = 0; j < 15; j++) {
if (a[i] == b[j]) { // 교집합
ok = 1;
break;
}
}
if (ok) {
for (k = 0; k < n; k++) {
if (a[i] == gyo[k]) { // 중복 확인
exist = 1;
break;
}
}
if (exist) exist = 0; // 중복이면
else gyo[n++] = a[i]; // 아니면
ok = 0;
}
}
//합집합 a[]
for (i = 0; i < 15; i++) {
for (j = 0; j < 15; j++) {
for (k = 0; k < m; k++) {
if (a[i] == hab[k]) { // 중복 확인
exist = 1;
}
}
if (exist) exist = 0; // 중복이면
else hab[m++] = a[i]; // 아니면
}
}
//합집합 b[]
for (i = 0; i < 15; i++) {
for (j = 0; j < 15; j++) {
if (b[i] == a[j]) { // 중복 학인
ok = 1;
break;
}
}
if (ok) ok = 0; // 중복
else {
for (k = 0; k < m; k++) {
if (b[i] == hab[k]) { // 중복 확인
exist = 1;
}
}
if (exist) exist = 0; // 중복이면
else hab[m++] = b[i]; // 아니면
}
}
// a[] - [b] 차집합
for (i = 0; i < 15; i++) {
for (j = 0; j < 15; j++) {
if (a[i] == b[j]) { // 교집합
ok = 1;
break;
}
}
if (!ok) {
for (k = 0; k < o; k++) {
if (a[i] == cha[k]) { // 중복 확인
exist = 1;
break;
}
}
if (exist) exist = 0; // 중복이면
else cha[o++] = a[i]; // 아니면
}
ok = 0;
}
printf("합집합\n");
for (i = 0; i < m; i++) printf("%d ", hab[i]);
printf("\n\n");
printf("교집합\n");
for (i = 0; i < n; i++) printf("%d ", gyo[i]);
printf("\n\n");
printf("차집합\n");
for (i = 0; i < o; i++) printf("%d ", cha[i]);
printf("\n\n");
}