ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 집합이 같은지 비교
    코딩/C언어 2018. 9. 27. 15:13
    반응형

    #define MAX_SET_SIZE 10

    #define HAVE_ELEMENT 1

    #define DO_NOT_HAVE_ELEMENT 0

    #include <stdio.h>

     

    // set element 가 있으면 1 을 없으면 0 을 반환한다

    int hasElement(int set[], int size, int element)

    {

    int i;

    for( i = 0; i < size; i++ )

    if( set[i] == element )

    return HAVE_ELEMENT; // we found it!

     

    return DO_NOT_HAVE_ELEMENT;

    }

     

    void printSet(int set[], int size)

    {

    int i;

     

    printf("{");

    for (i = 0; i < size; i++)

    {

    printf(" %d", set[i]);

     

    if (i != size - 1)

    printf(",");

    }

    printf(" }\n");

    }

     

    // set1 set2 가 같으면 1 을 다르면 0 을 반환

    int isSetEqual(int set1[], int size1, int set2[], int size2)

    {

    int i, j, result = 0;

     

    if (size1 != size2)

    return 0;

     

    for (i = 0; i < size1; i++)

    {

    for (j = 0; j < size1; j++)

    if (set1[i] == set2[j])

    result = 1;

     

    if (result == 0)

    return 0;

     

    result = 0;

    }

     

    return 1;

    }

     

    // 원소가 집합에 존재하지 않으면 추가, 이미 존재하면 redundant 라고 출력하고 현재 집합 크기를 반환

    int addOneElement(int set[], int size, int element)

    {

    int i;

     

    for (i = 0; i < size; i++)

    {

    if (set[i] == element)

    {

    printf("It is redundant. Please retry\n");

    printSet(set, size);

    return;

    }

    }

     

    set[i -1] = element;

    printSet(set, size);

     

    return;

    }

     

    int main(void)

    {

    int setA[MAX_SET_SIZE] = { 1, 2, 3 };

    int setB[MAX_SET_SIZE] = { 3, 2, 1, 4 };

    int num;

    int sizeA = 3, sizeB = 4;

     

    printf("A:"); printSet(setA, sizeA);

    printf("B:"); printSet(setB, sizeB);

     

    if (isSetEqual(setA, sizeA, setB, sizeB))

    printf("집한 A B 는 같다\n");

    else

    printf("집한 A B 는 다르다\n\n");

     

    printf("A 3 을 추가하면\n");

    sizeA = addOneElement(setA, sizeA, 3); // 3 SetA 에 추가한다 printf("집합 A:"); printSet(setA, sizeA);

    printf("A 4 를 추가하면\n");

    sizeA = addOneElement(setA, sizeA, 4); // 4 SetA 에 추가한다 printf("집합 A:"); printSet(setA, sizeA);

     

    if (isSetEqual(setA, sizeA, setB, sizeB))

    printf("집한 A B 는 같다\n");

     

    else

    printf("집한 A B 는 다르다\n");

    }

     

     

    결과:

     

    반응형

    '코딩 > C언어' 카테고리의 다른 글

    값 탐색 && 가장 큰 수 && 총 합  (0) 2018.09.27
    좌석 예약  (0) 2018.09.27
    난수 발생 후 정리  (0) 2018.09.27
    거스름돈 계산  (0) 2018.09.04
    난수 발생, 분류  (0) 2018.09.04
Designed by Tistory.