求助啊。。C++创建一个集合类Set,集合中任何两个元素都不相同。
集合支持以下运算:(1)增加元素到集合中(2)从集合中删除元素(3)计算集合的并(4)计算集合的差...
集合支持以下运算:(1)增加元素到集合中(2)从集合中删除元素(3)计算集合的并(4)计算集合的差
展开
3个回答
展开全部
已调试,有问题追问
class set
{ private :
int i;
int a[100];
public:
set(){i=0;}
void add(int b)
{
a[i]=b;
i++;
}
void delet(int b)
{int flag=0;
for(int j=0;j<i;j++)
if(a[j]==b)
{
for(int s=j;s<i-1;s++)
a[s]=a[s+1];
flag=1;
}
if(!flag)
{cout<<"该数不存在!"<<endl;}
i--;
}
set bing( set b)
{
int numa,numb,counter;
numa=i;
numb=b.i ;
for(int j=0;j<numb;j++)
{ counter=0;
for(int k=0;k<numa;k++)
{if(b.a[j]==a[k])
counter++;}
if(counter==0)
add(b.a[j]);
}
return *this;
}
set cha(set b)
{
int numa,numb,counter;
numa=i;
numb=b.i ;
for(int j=0;j<numb;j++)
{ counter=0;
for(int k=0;k<numa;k++)
{if(b.a[j]==a[k])
counter++;}
if(counter)
delet(b.a[j]);
}
return *this;
}
void display()
{ cout<<"目前集合里的元素是:"<<endl;
for(int j=0;j<i;j++)
cout<<a[j]<<" ";
cout<<endl;
}
};
void main()
{
int s;
set a;
while(1)
{
cout<<"1 加入数据"<<endl;
cout<<"2 删除数据"<<endl;
cout<<"3 求并集"<<endl;
cout<<"4 求差"<<endl;
cout<<"请选择操作!"<<endl;
cin>>s;
if(s==1)
{
cout<<"请键入加入的数据!"<<endl;
int g;
cin>>g;
a.add(g);
a.display ();
}
else if(s==2)
{
cout<<"请键入要删除的数据!"<<endl;
int g;
cin>>g;
a.delet(g);
a.display();
}
else if(s==3)
{
cout<<"请先再创建一个集合!"<<endl;
set b;
cout<<"请往新建集合里输入一个测试数据"<<endl;
int g;
cin>>g;
b.add (g);
a.bing (b);
a.display ();
}
else if(s==4)
{
cout<<"请先再创建一个集合!"<<endl;
set b;
cout<<"请往新建集合里输入一个测试数据"<<endl;
int g;
cin>>g;
b.add (g);
a.cha(b);
a.display ();
}
}
}
class set
{ private :
int i;
int a[100];
public:
set(){i=0;}
void add(int b)
{
a[i]=b;
i++;
}
void delet(int b)
{int flag=0;
for(int j=0;j<i;j++)
if(a[j]==b)
{
for(int s=j;s<i-1;s++)
a[s]=a[s+1];
flag=1;
}
if(!flag)
{cout<<"该数不存在!"<<endl;}
i--;
}
set bing( set b)
{
int numa,numb,counter;
numa=i;
numb=b.i ;
for(int j=0;j<numb;j++)
{ counter=0;
for(int k=0;k<numa;k++)
{if(b.a[j]==a[k])
counter++;}
if(counter==0)
add(b.a[j]);
}
return *this;
}
set cha(set b)
{
int numa,numb,counter;
numa=i;
numb=b.i ;
for(int j=0;j<numb;j++)
{ counter=0;
for(int k=0;k<numa;k++)
{if(b.a[j]==a[k])
counter++;}
if(counter)
delet(b.a[j]);
}
return *this;
}
void display()
{ cout<<"目前集合里的元素是:"<<endl;
for(int j=0;j<i;j++)
cout<<a[j]<<" ";
cout<<endl;
}
};
void main()
{
int s;
set a;
while(1)
{
cout<<"1 加入数据"<<endl;
cout<<"2 删除数据"<<endl;
cout<<"3 求并集"<<endl;
cout<<"4 求差"<<endl;
cout<<"请选择操作!"<<endl;
cin>>s;
if(s==1)
{
cout<<"请键入加入的数据!"<<endl;
int g;
cin>>g;
a.add(g);
a.display ();
}
else if(s==2)
{
cout<<"请键入要删除的数据!"<<endl;
int g;
cin>>g;
a.delet(g);
a.display();
}
else if(s==3)
{
cout<<"请先再创建一个集合!"<<endl;
set b;
cout<<"请往新建集合里输入一个测试数据"<<endl;
int g;
cin>>g;
b.add (g);
a.bing (b);
a.display ();
}
else if(s==4)
{
cout<<"请先再创建一个集合!"<<endl;
set b;
cout<<"请往新建集合里输入一个测试数据"<<endl;
int g;
cin>>g;
b.add (g);
a.cha(b);
a.display ();
}
}
}
展开全部
这个还用创建么,本来C++就有set类,是STL里带的,支持插入和删除。lz从set继承一个过来,自己加上求并和差的方法就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个需要使用数据结构中的链表,你这点分少了些。自己去学习是最好的解决方案。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询