C++(数据结构)集合的交并差

实验1 集合的交并差


要求:
(1)实验目的
通过该实验,让学生复习巩固C语言中的循环结构、循环控制条件、分支结构和数组/链表、函数的调用等有关内容,体会到用数组存储集合时,需要记录集合元素的个数,否则输出结果会出现数据越界现象。
(2)实验内容
通过键盘,分别输入两个数据元素类型为正整数的集合A和B,以负数输入为结束条件,输出两个集合的交、并、差。
(3)实验要求
从程序完善性上考虑,集合元素输入时,要有检查元素重复的功能,每个集合中不允许有重复的元素。集合可以用数组也可以用链表存储。
实现交、并、差运算时,分别把代码写成函数的形式,即实现交运算的函数,实现并运算的函数,实现差运算的函数,在主函数中分别调用三个函数。
使用菜单形式对应各个操作,应允许用户反复查看结果,想结束程序时,输入负数结束,使其编成一个完整的小软件。菜单参考示例如下:
1—输入集合A和B
2—求集合A交B
3—求集合A并B
4—求集合A-B
退出,输入一个负数!
(4)验收/测试用例
输入: A={1,2,3,4,5} B={3,4,5,6,7}
要注意输入的过程中,每输入一个元素都要检查输入的这个元素是否和前面的元素重复,如果重复,要求用户重新输入当前元素。
验收测试时要测试这种重复的情况。
输出 A交B={3, 4, 5}
A并B={1,2,3,4,5,6,7}
A-B={1, 2}


一丶使用静态数组全局声明,给定数组足够的初始长度,默认里面的元素为0.

#include<iostream>
#include<cstring>
#include<stdlib.h>
using namespace std;
//先定义两个长度足够的默认数组. 
int a[100]={
   0};
int b[100]={
   0};

//记录集合的长度 
int a_len=0;
int b_len=0;


void input_a();//输入集合A
void input_b();//输入集合B
void inter_(); //交集
void union_(); //并集
void diff_();  //A-B


int main(){
   
	int flag=1;
	int infer;
	while(flag){
   
		cout<<"********************************"<<endl;
    	cout<<"********1:输入集合A和B**********"<<endl;
    	cout<<"********2:A与B的交集.***********"<<endl;
    	cout<<"********3:A与B的并集.***********"<<endl;
    	cout<<"********4.A与B的差集.***********"<<endl;
    	cout<<"********************************"<<endl;
	    cout<<"输入随机一个负数来结束本程序."<<endl;
	    cout<<"输入相应的数字,来执行相应的操作:"<<endl; 
	    cin>>infer;
	    switch(infer){
   
	    	case 1:
	    		int k;
	    		k=1;
	    		system("cls");
	    		input_a();
	    		for(int i=0;i<a_len-1;i++){
       //每个元素依次和他后面的元素比较
	    			for(int j=i+1;j<a_len;j++){
   
	    				if(a[i]==a[j]){
   
	    					cout<<"请不要输入重复整数,重新输入."<<endl;
	    					k=0;
						}
					}
				}
				if(k==0) break;
	    		input_b();
	    		for(int i=0;i<b_len-1;i++){
   
	    			for(int j=i+1;j<b_len;j++)
  • 12
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值