| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 670 人关注过本帖
标题:谁能帮我修改一下这个C++小程序
取消只看楼主 加入收藏
jackietin
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2009-10-30
结帖率:100%
收藏
 问题点数:0 回复次数:1 
谁能帮我修改一下这个C++小程序
以下是个集合类,但是集合元素只能是数值,但是不知可否将其元素改成数组(double[a,b])或者结构体(struct{double a,b;})?该如何实现呢?


#include<algorithm>
#include<iostream>

using namespace std;

class SET     //集合里的元素按从小到大的顺序排列
{
public:
        SET();//缺省构造函数
        SET(const SET &); //拷贝函数
        int find(int val)const; //找到值为val元素返回1,否则返回0
        int full(void)const; //集合满时返回1,否则返回0
        int empty(void)const; //集合空时返回1,否则返回0
        void create(void);//创建集合
        void display(void) const;//输出集合
     int getlen() const;//获取集合中元素个数
     void increase() ;//扩大元素中的最大个数
   
        SET operator +(const SET &)const; //集合的并集
        SET operator -(const SET &)const; //集合的差集
        SET operator *(const SET &)const; //集合的交集
        SET &operator <<(int value); //增加一个元素
        SET &operator >>(int value); //删除一个元素
        SET &operator =(const SET &); //对集合赋值
  
        int *data; //存放集合元素的动态内存
        int count; //目前元素个数         
        int maxlen;//元素最大个数
~SET(void);
};


SET::SET()
{
data=NULL;
count=0;
maxlen=0;
}


SET::SET(const SET& s1)
{
maxlen=s1.getlen ()+10;
data=new int [maxlen];
int i(0);
for(;i<s1.count ;++i)
{
   data[i]=s1.data [i];
}
count=s1.count ;
sort(data,data+count);
}


SET::~SET()
{
delete []data;
count=0;
maxlen=0;
}


int SET::find(int val)const
{
for(int i=0;i!=count;++i)
   if(val==data[i])
    return 1;
return 0;
}


int SET::full()const
{
return (maxlen==count);
}


int SET::empty ()const
{
return (0==count);
}


void SET::create()
{
cout<<"please enter the number of the set."<<endl;
cin>>count;
maxlen=count+20;
data=new int [maxlen];
cout<<"please enter the value of the set"<<endl;
for(int i=0;i!=count;++i)
   cin>>data[i];
}


void SET::display() const
{
for(int i=0;i<count;++i)
   cout<<data[i]<<"  ";
cout<<endl;
}

void SET::increase ()
{
int *temp= new int[count];
int i;
for(i=0;i<count;++i)
   temp[i]=data[i];
delete [] data;
maxlen+=10;
data=new int [maxlen];
for(i=0;i<count;++i)
   data[i]=temp[i];
delete [] temp;
}

SET &SET::operator <<(int value)
{
if(maxlen==count)
   increase();
data[count]=value;
++count;
sort(data,data+count);
return *this;
}


SET &SET::operator >>(int value)
{

if(!empty())
{
   int loc(0);
    for(;loc!=count;++loc)
     if(data[loc]==value)
     {
      for(;loc!=count-1;++loc)
       data[loc]=data[loc+1];
     }
}
--count;
sort(data,data+count);
return *this;
}


int SET::getlen () const
{
return count;
}


SET SET::operator +(const SET &s1)const
{
SET s2(*this);
for(int i(0);i!=s1.count ;++i)
   if(!find(s1.data [i]))
    s2<<s1.data[i];
sort(data,data+count);
return s2;
}


SET SET::operator -(const SET &s1)const
{
SET temp;
for(int i=0;i<count-1;++i)
   if(!s1.find(data[i]))
    temp<<data[i];
sort(data,data+count);
return temp;
}


SET SET::operator *(const SET &s1)const
{
SET s2;
for(int i=0;i<count;++i)
   if(find(s1.data [i]))
    s2<<s1.data[i];
sort(data,data+count);
return s2;
}


SET &SET::operator =(const SET &s1)
{
delete []data;
data=new int [100];
int i(0);
for(;i<s1.count ;++i)
{
   data[i]=s1.data [i];
}
count=s1.count ;
sort(data,data+count);
return *this;
}
main()
{
    SET a,b,c,d;
    a<<12;
    a<<13;
    b<<12<<14<<11<<1;
    a.display();
    b.display();
    c=a+b;
    d=a*b;
    c.display();
    d.display();
}
搜索更多相关主题的帖子: include public double 结构体 
2009-11-16 04:49
jackietin
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2009-10-30
收藏
得分:0 
以下是引用mengfp在2009-11-16 11:16:31的发言:

重载
能否说的具体点? :)
2009-11-16 18:03
快速回复:谁能帮我修改一下这个C++小程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030611 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved