#include<iostream> #include<string> using namespace std; class A { public: void getdata()//输入数组元素 { cout<<"请输入集合中的元素:"; gets(data); } void print( )//输出数组元素 { puts(data); } A operator +(A s1) //重载"+"实现字符串的并集运算 { A temp; count=strlen(data); s1.count=strlen(s1.data); int i=0,j=0,k=0,x=0; for(i=0;i<count;i++) { temp.data[x]=data[i]; x++; } for(j=0;j<s1.count;j++) { k=0; for(i=0;i<count;i++) { if(s1.data[j]==data[i]) break; else if(s1.data[j]!=data[i]) k++; if(k==count) { temp.data[x]=s1.data[j]; x++; } } } temp.data[x]='/0'; return temp; } A operator *(A s1) //重载“*”实现字符串的交集运算 { A temp; count=strlen(data); s1.count=strlen(s1.data); int i=0,j=0,x=0; for(i=0;i<count;i++) { for(j=0;j<s1.count;j++) { if(data[i]==s1.data[j]) { temp.data[x]=data[i]; x++; } } } temp.data[x]='/0'; return temp; } A operator -(A s1) //重载“-”实现字符串的差集运算 { A temp; count=strlen(data); s1.count=strlen(s1.data); int i=0,j=0,k=0; static int x=0; for(i=0;i<count;i++) { k=0; for(j=0;j<s1.count;j++) { if(data[i]==s1.data[j]) break; else if(data[i]!=s1.data[j]) k++; if(k==s1.count) { temp.data[x]=data[i]; x++; } } } temp.data[x]='/0'; return temp; } private: char data[100]; int count; }; void main() { A s1,s2,s3,s4; s1.getdata(); s2.getdata(); s3.getdata(); cout<<"并集:"; s4=s1+s2+s3; s4.print(); cout<<"交集:"; s4=s1*s2*s3; s4.print(); cout<<"差集:"; s4=s1-s2; s4.print(); }