定义如下集合类的成员函数,并用数据进行测试。
Class Set
{
int *elem; //存放集合元素的指针
int count; //存放集合中的元素个数
public:
Set(); //默认构造函数
Set(int s[],int n); //以数组s的元素和元素个数为s构造一个集合
int find(int x) const; //判断x是否为集合元素
Set operator+(const Set &); //集合的并集
Set operator-(const Set &);//集合的差集
Set operator*(const Set &);//集合的交集
void disp(); //输出集合元素
};
程序清单为:
#include<iostream>
using namespace std;
int p[15];
int r;
class Set{
int *elem;
int count;
public:
Set()
{elem=0;
count=0;
}
Set(int s[],int n)
{elem=s;
count=n;
}
void find(int x)
{int i;
for(i=0;i<=4;i++)
{if(elem[i]==x)
{cout<<x<<"is number."<<endl;break;}
else
if(elem[i]!=x&&(i==4))
{cout<<x<<"is not number."<<endl;}
}
}
Set operator+(const Set&c)
{int i=0,j,k=0;
Set temp;
for(i=0;i<=5;i++)
{p[k++]=c.elem[i];}
for(i=0;i<=4;i++)
{if(elem[i]!=c.elem[0]&&elem[i]!=c.elem[1]&&elem[i]!=c.elem[2]&&elem[i]!=c.elem[3]&&elem[i]!=c.elem[4]&&elem[i]!=c.elem[5])
{p[k++]=elem[i];}
}
{ r=k;temp.elem=p;return temp;}
}
Set operator-(const Set&c)
{Set temp;int i,k=0;
for(i=0;i<=4;i++)
{if(elem[i]!=c.elem[0]&&elem[i]!=c.elem[1]&&elem[i]!=c.elem[2]&&elem[i]!=c.elem[3]&&elem[i]!=c.elem[4]&&elem[i]!=c.elem[5])
{p[k++]=elem[i];}
}
{r=k;temp.elem=p;return temp;}
}
Set operator*(const Set&c)
{Set temp;int i,k=0;
for(i=0;i<=4;i++)
{if(elem[i]==c.elem[0]||elem[i]==c.elem[1]||elem[i]==c.elem[2]||elem[i]==c.elem[3]||elem[i]==c.elem[4]||elem[i]==c.elem[5])
{p[k++]=elem[i];}
}
{r=k;temp.elem=p;return temp;}
}
void dis()
{int i;
for(i=0;i<r;i++)
{cout<<elem[i]<<" ";}
cout<<endl;
}
};
void main()
{int n[]={22,4,6,64,7};
int m[]={33,55,6,4};
int i;
Set s(n,4);
Set t(m,4);
Set w;
cout<<"please input one number:"<<endl;
cin>>i;
s.find(i);
w=s+t;
cout<<"s+t=";
w.dis();
w=s-t;
cout<<"s-t=";
w.dis();
w=s*t;
cout<<"s*t=";
w.dis();
}
请给这个实验程序添加异常处理,主要考虑资源的回收。
本人实在是不会,恳请哪位高手帮忙解决一下,急需!!!!!!!!非常非常感谢!!!!!!
[此贴子已经被作者于2007-6-21 20:32:42编辑过]