Computer/Program
A와 B의 합집합 구하기
Y.Hyun
2007. 10. 29. 02:36
#include<stdio.h>
void main()
{
int A[4]={1, 2, 3, 4};
int B[4]={2, 4, 5, 6};
int i, j, check; //j, check 추가
int temp[8]; //배열의 모든 원소 임시 저장
int C[8]; //A와 B의 교집합
int D[8]; // A와 B의 합집합
int nD=0;
// 이 부분에 작성
//A와 B의 교집합을 구해서 C배열에 저장
for(i=0; i<4; i++)
for(j=0; j<4; j++)
if(A[i] == B[j])
{
C[nD++] = A[i];
break;
}
//A와 B의 원소를 모두 temp에 저장
for(i=0; i<4; i++)
temp[i] = A[i];
for(j=0; j<4; j++)
temp[i+j] = B[j];
for(i=0; i<4; i++)
for(j=0; j<4; j++)
if(A[i] == B[j])
{
C[nD++] = A[i];
break;
}
//A와 B의 원소를 모두 temp에 저장
for(i=0; i<4; i++)
temp[i] = A[i];
for(j=0; j<4; j++)
temp[i+j] = B[j];
nD = 0; //nD 초기화
//루프를 돌면서 교집합과 원소가 같으면 check 1로 되어 저장을 안하고
//나머지 원소만 저장함
for(i=0; i<8; i++)
{
check = 0;
//나머지 원소만 저장함
for(i=0; i<8; i++)
{
check = 0;
for(j=0; j<2; j++)
if(temp[i] == C[j])
check = 1;
if(temp[i] == C[j])
check = 1;
if(check == 0)
D[nD++] = temp[i];
}
D[nD++] = temp[i];
}
//나머지 교집합 원소 저장
for(i=0; i<2; i++)
D[nD++] = C[i];
for(i=0; i<2; i++)
D[nD++] = C[i];
//배열 출력
printf("A와 B의 합집합={");
for(i=0; i<nD; i++)
printf("%d, ", D[i]);
printf("}");
}
printf("A와 B의 합집합={");
for(i=0; i<nD; i++)
printf("%d, ", D[i]);
printf("}");
}
허접한 소스 ㅠ 머리가 나쁜갑다;