输入两个闭区间,求其交集,并集和差集(C++)

2019-03-05 11:02:07 浏览数 (1)

输入两个闭区间,求其交集,并集和差集(C )

C :

代码语言:javascript复制
#include<iostream>using namespace std;
int main() {
	int a,b;
	int c,d;
	cout<<"请输入第一个闭区间的a,b"<<endl;
	cin>>a>>b;
	cout<<"请输入第二个闭区间的c,d"<<endl;
	cin>>c>>d;
	if(a>b||c>d) {
		cout<<"输入的区间不合法"<<endl;
	} else {
		if(d<a) {
			cout<<"交集为:空集"<<endl;
			cout<<"并集为:"<<"["<<c<<","<<d<<"]"<<","<<"["<<a<<","<<b<<"]"<<endl;
			cout<<"差集为:"<<"["<<a<<","<<b<<"]"<<endl;
		} else if(c>b) {
			cout<<"交集为:空集"<<endl;
			cout<<"并集为:"<<"["<<a<<","<<b<<"]"<<","<<"["<<c<<","<<d<<"]"<<endl;
			cout<<"差集为:"<<"["<<a<<","<<b<<"]"<<endl;
		} else if(c<a) {
			int min,max;
			if(d>b) min=b,max=d;
			else min=d,max=b;
			cout<<"交集为:"<<"["<<a<<","<<min<<"]"<<endl;
			cout<<"并集为:"<<"["<<c<<","<<max<<"]"<<endl;
			if(d>=b) cout<<"差集为:空集"<<endl;
			else cout<<"差集为:"<<"["<<d-1<<","<<b<<"]"<<endl;
		} else {
			int min,max;
			if(d>b) min=b,max=d;
			else min=d,max=b;
			cout<<"交集为:"<<"["<<c<<","<<min<<"]"<<endl;
			cout<<"并集为:"<<"["<<a<<","<<max<<"]"<<endl;
			if(c<=a) cout<<"差集为:空集"<<endl;
			else {
				cout<<"差集为:"<<"["<<a<<","<<c-1<<"]";
				if(d<b) {
					cout<<","<<"["<<d-1<<","<<b<<"]";
				}
				cout<<endl;
			}
		}
	}
	return 0;
}

perl集合运算之交集,并集,差集

perl中,实现两个集合的运算很简单,只需几行代码即可

Perl代码:

代码语言:javascript复制
@a=('a'..'c',1..3);  
@b=('A'..'C',1..3);  
@union=();#并集  
@diff=(); #差集   
@isect=();#交集  
foreach $e(@a,@b){  
   $union{$e}  &&$isect{$e}  ;  
}  
@union=keys %union;  
@isect=keys %isect;  
@diff=grep {$union{$_}==1;} @union;  
print (join ',',@union);  
print "n";  
print (join ',',@isect);  
print "n";   
print (join ',', @diff); 

输出:

Perl代码  

  1. A,a,3,B,2,c,1,C,b  
  2. 1,3,2
  3. A,a,B,c,C,b  

0 人点赞