[합집합의 경우]
input1.txt input2.txt 의 각 숫자들이 오름차순으로 정렬되어 있다고 가정한 것임
#include <stdio.h>
int main() {
FILE *f1, *f2;
int x1, x2, x3;
f1=fopen("input1.txt", "r");
if(f1==NULL) {
printf("입력파일1이 없습니다.");
return -1;
}
f2=fopen("input2.txt", "r");
if(f2==NULL) {
printf("입력파일2가 없습니다.");
return -1;
}
fscanf(f1, "%d", &x1);
fscanf(f2, "%d", &x2);
while(!feof(f1) && !feof(f2)) {
if(x1<x2) {
x3=x1;
printf("%d ", x3);
fscanf(f1, "%d", &x1);
}
else if(x1>x2) {
x3=x2;
printf("%d ", x3);
fscanf(f2, "%d", &x2);
}
else {
x3=x1;
printf("%d ", x3);
fscanf(f1, "%d", &x1);
fscanf(f2, "%d", &x2);
}
}
if(!feof(f1)) {
while(!feof(f1) && x1<x2) {
x3=x1;
printf("%d ", x3);
fscanf(f1, "%d", &x1);
}
if(x2<x1) {
x3=x2;
printf("%d ", x3);
}
while(!feof(f1)) {
x3=x1;
printf("%d ", x3);
fscanf(f1, "%d", &x1);
}
}
if(!feof(f2)) {
while(!feof(f2) && x2<x1) {
x3=x2;
printf("%d ", x3);
fscanf(f2, "%d", &x2);
}
if(x1<x2) {
x3=x1;
printf("%d ", x3);
}
while(!feof(f2)) {
x3=x2;
printf("%d ", x3);
fscanf(f2, "%d", &x2);
}
}
if(x1>x3) {
x3=x1;
printf("%d ", x3);
}
if(x2>x3) {
x3=x2;
printf("%d ", x3);
}
fclose(f1);
fclose(f2);
return 0;
}
[교집합의 경우]
#include <stdio.h>
int main() {
FILE *f1, *f2;
int x1, x2, x3;
f1=fopen("input1.txt", "r");
if(f1==NULL) {
printf("입력파일1이 없습니다.");
return -1;
}
f2=fopen("input2.txt", "r");
if(f2==NULL) {
printf("입력파일2가 없습니다.");
return -1;
}
fscanf(f1, "%d", &x1);
fscanf(f2, "%d", &x2);
while(!feof(f1) && !feof(f2)) {
if(x1<x2) {
fscanf(f1, "%d", &x1);
}
else if(x1>x2) {
fscanf(f2, "%d", &x2);
}
else {
x3=x1;
printf("%d ", x3);
fscanf(f1, "%d", &x1);
fscanf(f2, "%d", &x2);
}
}
if(!feof(f1)) {
while(!feof(f1)) {
if(x1==x2) {
x3=x1;
printf("%d ", x3);
}
fscanf(f1, "%d", &x1);
}
}
if(!feof(f2)) {
while(!feof(f2)) {
if(x1==x2) {
x3=x2;
printf("%d ", x3);
}
fscanf(f2, "%d", &x2);
}
}
fclose(f1);
fclose(f2);
return 0;
}
[차집합]
#include <stdio.h>
int main() {
FILE *f1, *f2;
int x1, x2, x3;
f1=fopen("input1.txt", "r");
if(f1==NULL) {
printf("입력파일1이 없습니다.");
return -1;
}
f2=fopen("input2.txt", "r");
if(f2==NULL) {
printf("입력파일2가 없습니다.");
return -1;
}
fscanf(f1, "%d", &x1);
fscanf(f2, "%d", &x2);
while(!feof(f1) && !feof(f2)) {
if(x1<x2) {
x3=x1;
printf("%d ", x3);
fscanf(f1, "%d", &x1);
}
else if(x1>x2) {
fscanf(f2, "%d", &x2);
}
else { // x1==x2
fscanf(f1, "%d", &x1);
fscanf(f2, "%d", &x2);
}
}
if(!feof(f1)) {
while(!feof(f1) && x1<x2) {
x3=x1;
printf("%d ", x3);
fscanf(f1, "%d", &x1);
}
if(x1==x2) {
fscanf(f1, "%d", &x1);
}
while(!feof(f1)&& x1>x2) {
x3=x1;
printf("%d ", x3);
fscanf(f1, "%d", &x1);
}
}
if(x1>x3) {
x3=x1;
printf("%d ", x3);
}
fclose(f1);
fclose(f2);
return 0;
}
'c·c++ > c 프로그래밍' 카테고리의 다른 글
그냥, 마름모+삼각형 (0) | 2013.04.13 |
---|---|
각자리의 수 출력하기 (0) | 2013.04.11 |
진동하는 배너 (0) | 2013.04.07 |
디렉토리 리스팅(윈도우) (0) | 2013.01.31 |
확장된 유클리트 알고리즘 (gcd 최대공약수) 구하기 (0) | 2013.01.29 |