注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

c++作业+第五周 2014.3.22 集合的各种变化  

2014-03-22 23:46:06|  分类: C++作业  李 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
/*
(1)定义集合
(2)增加元素
(3)删除元素
(4)交集
(5)并集
(6)差集
(7)重载定义输入输出
(8)重载定义相等
(9)输出排序
运行正确

输出如下:
输入你要输入的元素个数
3
 1 2 3
sort  从小到大的排序
1 2 3
没有你要删的元素,原来的输出嘎
sort  从小到大的排序
-9 -8 -7 1 2 3 4 5 6
sort  从小到大的排序
2 3
sort  从小到大的排序
-9 -8 -7 1 4 5 6
sort  从小到大的排序
-9 -8 -7 1 2 3 4 5 6
sort  从小到大的排序
-9 -8 -7 1 2 3 4 5 6 8
Press any key to continue
*/
#include<iostream.h>
#include<algorithm>
class  Insert
{
private:
int count;
int *element;
public:
Insert()
{
element=NULL;
count=0;

}
~Insert()//析构函数
{
if(element!=NULL)
delete []element;
}
Insert(const int *a,const int size);//数组
Insert(const Insert &set);//复制构造函数
Insert setjiao(const Insert& set)const;//求交集;
Insert setbing(const Insert &set)const;//求并集;
Insert setcha(const Insert &set);//求差集;
void operator=(const Insert &set);//复制
Insert deletesetone(int v);//删掉一个元素;
Insert increaseone(int v);//增加一个元素
bool  operator ==(const Insert &set)const; //比较函数
friend ostream& operator<<(ostream& out,const Insert& set);//输出函数,按照从小到大排序;
friend istream& operator>>(istream& in,Insert& set );//输入函数
};
Insert::Insert(const int *a,const int size)
{
count=size;
element=new int[count];
for(int i=0;i<count;i++)
{
element[i]=a[i];
}
}
Insert::Insert(const Insert &set)
{
if(set.element==NULL)
{
    element=NULL;
count=0;
  
}
else
{
element=new int [set.count];
count=set.count;
int i;
for(i=0;i<count;i++)
{
element[i]=set.element[i];
}
}
}
Insert Insert::setjiao(const Insert& set)const
{
Insert newint;
int *p=new int [count];
int i,j,a=0;
for(i=0;i<count;i++)
{
for(j=0;j<set.count;j++)
{
if(element[i]==set.element[j])
{
p[a++]=element[i];
}
}
}
newint.element=new int [a];
newint.count=a;
for(i=0;i<a;i++)
{
newint.element[i]=p[i];
}
delete []p;
return newint;

}
Insert Insert:: setbing(const Insert &set)const
{
Insert newint;
int n=set.count+count;
int a;
int *p=new int[n];
int i,j;
for(i=0;i<count;i++)
{
p[i]=element[i];
}
a=i;
for(j=0;j<set.count;j++)
{
for(i=0;i<count;i++)
{
if(set.element[j]==element[i])
{
break;
}
}
if(i==count)
{
p[a++]=set.element[j];

}
}
newint.element=new int [a];
newint.count=a;
//newint.element=p;
for(i=0;i<a;i++)
{
newint.element[i]=p[i];
 
}
delete []p;
//cout<<newint.element[i-2];
return newint;

}
Insert Insert::setcha(const Insert &set)
{
Insert newint;
Insert a=this->setjiao(set);
int *p=new int [count];
int i,j,b=0;
for(i=0;i<count;i++)
{
for(j=0;j<a.count;j++)
{
if(element[i]==a.element[j])
{
break;
}

}
if(j==a.count)
{
p[b++]=element[i];
}
}
newint.element =new int [b];
newint.count=b;
for(i=0;i<b;i++)
{
newint.element[i]=p[i];
}
newint.count=b;
delete[] p;
return newint;
}
bool Insert::operator ==(const Insert &set)const
{
if(set.count!=count)
return false;
std::sort(set.element,set.element+set.count);
std::sort(element,element+count);
int i;
for(i=0;i<count;i++)
{
if(element[i]!=set.element[i])
{
return false;
}

}
return true;
}
ostream& operator<<(ostream& out,const Insert& set)
{
int i;
std::sort (set.element,set.element+set.count);
cout<<"sort  从小到大的排序"<<endl;
for(i=0;i<set.count;i++)
out<<set.element[i]<<" ";
return out;
}
istream& operator>>( istream& in,Insert &set )
{
int i,n;
cout<<"输入你要输入的元素个数"<<endl;
cin>>n;
set.count=n;
set.element=new int [n];
for(i=0;i<set.count;i++)
in>>set.element[i];
return in;
}
void Insert::operator=(const Insert &set)
{
if(this==&set) return;
count=set.count;
if(element!=NULL)
delete[] element;
element=new int [set.count];
for(int i=0;i<set.count;i++)
element[i]=set.element[i];
}
Insert Insert::deletesetone(int v)
{
Insert newint;
int n=count-1;
int *p=new int [n];
int i,b=0,j=0;
for(i=0;i<count;i++)
{
if(element[i]!=v)
{
  p[b]=element[i];
  b++;
  j++;
}
}
if(j==count)
{
cout<<"没有你要删的元素,原来的输出嘎"<<endl;
return *this;
}
else
{
newint.element =new int [b];
newint.count=b;
for(i=0;i<b;i++)
{
newint.element[i]=p[i];
}
newint.count=b;
delete []p;
return newint;
}
}
Insert Insert:: increaseone(int v)
{
Insert newint;
for(int j=0;j<count;j++)
{
if(element[j]==v)
{
cout<<" 你要增加的元素重复了,输出原来的集合呵呵"<<endl;
return *this;
}
}

int n=count+1;
int *p=new int [n];
p[0]=v;
for(int i=1;i<=count;i++)
{
p[i]=element[i-1];
}
std::sort(p,p+count+1);
newint.element= new int [count+1];
newint.count=count+1;
for(i=0;i<count+1;i++)
{
newint.element[i]=p[i];
}
delete []p;
return newint;
}
int main()
{
int a[9]={1,2,3,4,5,6,-8,-7 ,-9},b[2]={2,3};
Insert x1(a,9),x2(b,2),x3,x4,x5,x6,x7,x8;
cin>>x8;
cout<<x8<<endl;
x3=x1.setbing(x2);
x4=x1.setjiao(x2);
x5=x1.setcha(x2);
x6=x1.deletesetone(9);
x7=x1.increaseone(8);
cout<<x3<<endl;
cout<<x4<<endl;
cout<<x5<<endl;
cout<<x6<<endl;
cout<<x7<<endl;
return 0;
}

  评论这张
 
阅读(6)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017