一道实验题,太难了,做不出来,望高手解答
在VC++中建立一个Win32 Console Application工程。实现一个 AbsCollection类,该类包含的成员有:储存元素的整型数组、标志最后一个元素位置的整型last及数组长度、用来对集合中元素进行枚举的一个成员函数,并从AbsCollection类派生出Set类。Set对象中的数组是包含零个或多个无序的非重复元素,f1.dat 、f2.dat 文件中存放初始数据元素,由Set对象构造函数打开文件读入到数组中,经过加工处理后的运算结果存入该对象的数组中,由Set 对象析构函数将数组中元素写入指定的磁盘文件中。已知AbsCollection类定义如下:
class AbsCollection{
protected:
int *iPtr; //指向数组的指针
int last; //数组最后一个元素的位置
int Max_Size; //数组长度
public:
AbsCollection(){};
AbsCollection(int size){
Max_Size=size;
iPtr=new int[Max_Size];
last=-1;
};
~AbsCollection(){}
void OutSet(){
if(last<0){
cout<<"Empty set!"<<endl;
return;
}
cout<<"The number of elements:" <<last+1<<endl;
for(int *ip=iPtr;ip<=iPtr+last;)
cout<<*ip++<<” “;
cout<<endl;
}
};
(1)定义Set类,编写Set类构造函数和析构函数,使它们完成打开文件读入元素到数组中和将数组中元素写入指定的f1.dat磁盘文件中;
(2)编写集合增加一个元素成员函数input(int x);(注:如果集合中已有相同的元素,则不再加入)
(3)编写删除一个元素成员函数erase(int x);
(4)编写判别元素是否属于集合的成员函数isInSet(int x);
(5)编写求两个集合交的函数成员intersection(Set &s);
(6)编写求两个集合差的成员函数;
(7)重载+运算符,用于求两个集合的并;
(8)编写集合排序的成员函数sort();(从大到小排序)
(9)重载<<运算符,用于在屏幕上输出集合元素。