2006---已知集合A和集合B中的元素,设计三个算法,求A交B的结果,A并B的结果,A-B的结果

已知集合A和集合B中的元素,设计三个算法,求A交B的结果,A并B的结果,A-B的结果。
在文件a.txt中第一行为A集合中的元素个数,第二行为A集合中的元素。
在文件b.txt中第一行为B集合中的元素个数,第二行为B集合中的元素。

代码:

#include<iostream>

#include<cstdio>

#include<set>

#include<fstream>

#include<algorithm>

#include<iterator>

using namespace std;


int main()
{

  //fstream filea("A:\\a.txt");

  //fstream fileb("A:\\b.txt");

  FILE *fp1;
  fp1=fopen("A:\\a.txt","rw+");
   FILE *fp2;
   fp2=fopen("A:\\b.txt","rw+");
  set<int> A;
  set<int> B;
  set<int> C,D,E;
  set<int>::iterator op;

  int na, nb;
  /*
  filea>> na;
  for (int i = 0; i < na; i++) {

	int temp;
	filea >> temp;
	A.insert(temp);
  }

  fileb>> nb;
  for (int i = 0; i < nb; i++) {

	int temp;

	fileb >> temp;
	B.insert(temp);
  }
  */
  while(!feof(fp1)){
    int num1;
    fscanf(fp1,"%d",&num1);
    for(int i=0;i<num1;i++){
            int number;
        fscanf(fp1,"%d",&number);
        A.insert(number);
    }

  }

   while(!feof(fp2)){
    int num2;
    fscanf(fp2,"%d",&num2);
    for(int i=0;i<num2;i++){
            int number;
        fscanf(fp2,"%d",&number);
        B.insert(number);
    }

  }
  set_intersection(A.begin(), A.end(), B.begin(), B.end(), inserter(C, C.begin()));
  for (op = C.begin(); op!= C.end(); op++)
 {
    	//if ( != C2.begin())cout << ", ";
	cout << *op<<' ';

  }
  cout<< endl;
  set_union(A.begin(), A.end(), B.begin(), B.end(), inserter(D, D.begin()));
  for (op = D.begin(); op != D.end(); op++)
	{

	//if ( != C2.begin())cout << ", ";
	cout << *op << ' ';

  }

	cout << endl;

	set_difference(A.begin(), A.end(), B.begin(), B.end(), inserter(E, E.begin()));

	for (op = E.begin(); op != E.end(); op++)
 {

		//if ( != C2.begin())cout << ", ";
		cout << *op << ' ';

	}
	cout<<endl;
	fclose(fp1);

	fclose(fp2);
	system("pause");
	return 0;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值