C++ 합집합, 차집합 출력
감추어왔던
#include fstream.h
#include string.h
#include stdlib.h
void main()
{
ifstream in(input.txt);
ofstream out(output.txt);
int A[31]={0}, B[31]={0}, C[60]={0}, D[30]={0}; // A집합, B집합, 합집합, 차집합
int i, j; // for
int imsi; // 임시
int cnt = -1; // 집합 중복 뺄때
int cha = -1; // 차집합 입력
int jCh = 0; // 차집합 원소 확인
int len_A, len_B, len_C, len_D=0; // 각 집합의 원소의 개수
// A 입력
for(i=0; ; i++)
{
in A[i];
if(A[i] == -1)
{
A[i] = 0;
len_A = i;
break;
}
}
// B 입력
for(i=0; ; i++)
{
in B[i];
if(B[i] == -1)
{
B[i] = 0;
len_B = i;
break;
}
}
// A 정렬
for(i=0; ilen_A; i++)
for(j=i; jlen_A; j++)
if(A[i] A[j])
{
imsi = A[j];
A[j] = A[i];
A[i] = imsi;
}
// A 중복빼기
for(i=0; ilen_A-1; i++)
if(A[i] == A[i+1])
{
cnt = i-1;
for(j=i+1; jlen_A; j++)
A[++cnt] = A[cnt+1];
A[len_A] = A[len_A -1] = 0;
len_A--;
--i;
}
// B 정렬
for(i=0; ilen_B; i++)
for(j=i; jlen_B; j++)
if(B[i] B[j])
{
imsi = B[j];
B[j] = B[i];
B[i] = imsi;
}
// B 중복 빼기
for(i=0; ilen_B-1; i++)
if(B[i] == B[i+1])
{
cnt = i-1;
for(j=i+1; jlen_B; j++)
B[++cnt] = B[cnt+1];
B[len_B] = B[len_B -1] = 0;
len_B--;
--i;
}
// 중복빼고 정렬한 A, B 출력
for(i=0; ilen_A; i++)
out A[i] ;
out endl;
for(i=0; ilen_B; i++)
out B[i] ;
out endl;
len_C = len_A + len_B;
// 합집합 입력
for(i=0; ilen_A; i++)
C[i] = A[i];
for(i=len_A; ilen_C; i++)
C[i] = B[i-len_A];
// 합집합 정렬
for(i=0; ilen_C; i++)
for(j=i; jlen_C; j++)
if(C[i] C[j])
{
imsi = C[j];
C[j] = C[i];
C[i] = imsi;
}
// 합집합 중복 빼기
for(i=0; ilen_C-1; i++)
if(C[i] == C[i+1])
{
cnt = i-1;
for(j=i+1; jlen_C; j++)
C[++cnt] = C[cnt+1];
C[len_C] = C[len_C -1] = 0;
len_C--;
--i;
}
// 중복빼고 정렬한 합집합 출력
for(i=0; ilen_C; i++)
out C[i] ;
out endl;
// 차집합 입력
for(i=0; ilen_A; i++)
{
for(j=0; jlen_B; j++)
if(A[i] == B[j])
{
jCh = 1;
break;
}
if(jCh == 0)
{
D[++cha] = A[i];
len_D++;
}
jCh = 0;
}
if(D[0] == 0)
out -1;
// 차집합 출력
for(i=0; ilen_D; i++)
out D[i] ;
out endl;
in.close();
out.close();
}먼저 출력은
A집합 정렬된거
B집합 정렬된거
합집합
차집합(공집합일경우 -1출력)
이건데
자동 채점기기로 채점하니까
자꾸 90점만 나오네요 --;
뭐가 잘못된건지 알려주세요~~~~
(채점기기가 잘못된다는지 그런일은 없습니다 ;;)