⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 experiment02 intset整数类.cpp

📁 整数类的课程设计作业
💻 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 + -