📄 experiment02 intset整数类.cpp
字号:
/*定义整数集合类intSet,该类包括如下成员函数:
1. IntSet();@ //类的构造函数,根据需要可以定义多个构造函数
2. Empty(); //清空该整数集合
3. IsEmpty(); //判断整数集合是否为空
4. IsMemberOf();@ //判断某个整数是否在该整数集合内
5. Add();@ //增加一个整数到整数集合中
6. Sub(); //从整数集合中删除一个整数元素
7. IsEqual(); //判断两个集合是否等价
8. Intersection(); //求两个整数集合的交集
9. Union(); //求两个整数集合的并集
10. Print();@ //依次输出该集合的每个元素
该类还包括如下数据成员:
1. element[100]; //保存整数集合数据
2. EndPosition; //指示整数集合的最后一个元素位置
注意:整数集合中不允许有相同元素存在。另外,对于函数的参数及其返回类型,
根据需要自定义。*/
#include<iostream.h>
class IntSet
{
public:
IntSet();
IntSet(IntSet &a); //类的构造函数,根据需要可以定义多个构造函数
int Empty(); //清空该整数集合
int IsEmpty(); //判断整数集合是否为空
int IsMemberOf(int n); //判断某个整数是否在该整数集合内
int Add(int n); //增加一个整数到整数集合中
int Sub(int n); //从整数集合中删除一个整数元素
int IsEqual(IntSet &b); //判断两个集合是否等价
int Intersection(IntSet &b);//求两个整数集合的交集
int Union(IntSet &b); //求两个整数集合的并集
void print(); //依次输出该集合的每个元素
private:
int Endposition;//指示整数集合的最后一个元素位置
int element[100];//保存整数集合数据
int x;
};
IntSet::IntSet(IntSet &a)//类的构造函数,根据需要可以定义多个构造函数
{
x=a.x;
for(int i=0;i<x;i++)
element[i]=a.element[i];
}
int IntSet::IsMemberOf(int n)
{//判断某个整数是否在该整数集合内
for(int i=0;i<x;i++) //输入n与element中的每个数字进行
if(element[i]==n) //比较,判断element是否有与n一样的数
return 1; //有n返回1
return 0; //没有返回0
}
int IntSet::Add(int n)
{//增加一个整数到整数集合中
if(IsMemberOf(n)) //判断element是否有n
return 1; //有就返回1
else if(x>=100) //判断输入n后的范围是否超出
return 0; //不是就返回0
else //element没有n
{
element[x++]=n; //就在element中加入n
return 1;
}
}
void IntSet::print()//依次输出该集合的每个元素
{
cout<<"{";
for(int i=0;i<x-1;i++) //输出elenmet中的每个数
cout<<element[i]<<",";
//if(x>0)
//cout<<element[x-1];
cout<<"}"<<endl;
}
int IntSet::Empty()//清空该整数集合
{
for(int i=0;i<x;i++) //
element[i]=0;
Endposition=-1;
}
int IntSet::IsEmpty()//判断整数集合是否为空
{
for(int i=0;i<x;i++)
if(element[i]==-1)
return 1;
else
return 0;
}
int IntSet::Sub(int n)//从整数集合中删除一个整数元素
{
if(!IsMemberOf(n)) //判断element是否有n
return false; //没有就返回false
else
for(int i=0;i<x;i++)
if(element[i]==n) //如果element中有n这数
element[x--]=n; //删除n这数
}
int IntSet::IsEqual(IntSet &b)//判断两个集合是否等价
{
int equal;
if(Endposition!=b.Endposition)
return false;
for (int i=0;i<Endposition;i++)
{
equal=false;
for(int j=0;j<=b.Endposition;j++)
if(element[i]==b.element[j])
{
equal=true;
break;
}
if(!equal)
return false;
}
return true;
}
int IntSet::Intersection(IntSet &b)//求两个整数集合的交集
{
int a[100],size=0;
for(int i=0;i<=Endposition;i++)
for(int j=0;j<=b.Endposition;j++)
if(element[i]=b.element[j])
{
a[size]=element[i];
size++;
break;
}
return intset(a,size);
}
int IntSet::Union(IntSet &b)//求两个整数集合的并集
{
int a[100],size;
for(int i=0;i<=Endposition;i++)
a[i]=element[i];
size=Endposition+1;
for(i=0;i<=b.Endposition;i++)
if(IsMemberOf(b.element[i]))
continue;
else
{
if (size==99)
break;
a[size]=b.element[i];
size++;
}
return intset(a,size);
}
void main()
{
IntSet m;
cout<<m.IsEmpty()<<endl;
m.print();
IntSet n;
for(int i=1;i<=8;i++)
n.Add(i);
n.print();
cout<<n.IsMemberOf(5)<<"\n"<<"Endposition:"<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -