#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");
}