C++程序,求大神帮忙!!急求!!!最好在这几天回答!!!发邮箱也行!!450555211@qq.com

定义并实现一个整数集合类int_set,集合类中cur_size表明当前集合中有几个整数,集合中最多含max_size个整数,存放集合元素的数组是动态的。要求提供的方法有... 定义并实现一个整数集合类int_set,集合类中cur_size表明当前集合中有几个整数,集合中最多含max_size个整数,存放集合元素的数组是动态的。要求提供的方法有:
(1)增加一个整数到集合中;
(2)从集合中去掉一个元素;
(3)判断一个元素是否在集合中;
(4)重载<<运算法,输入集合;重载>>运算符输出集合;
(5)分别实现集合的交、并、差运算。
展开
 我来答
xiaot1021
2012-07-03 · TA获得超过326个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:234万
展开全部

 

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <iostream.h>

 

class int_set

{

 

public:

 int *val;

 int cur_size ;

 int max_size ;

public:

 int_set(){

  max_size = 0;

  cur_size = 0;

  val      = NULL;

 }

 ~int_set(){

  if(val != NULL)

   delete []val;

 }

 void add_num(int number)

 {

  if(cur_size>=max_size && check_num(number) > 0 ) //超出最大数量或已经存在

   return;

  val[cur_size++]=number;

 }

 void del_num(int number)

 {

  int p = check_num(number);

  if( p == -1) //没找到

   return ;

  for(int i=p;i<cur_size-1;i++)

   val[i] = val[i+1];

  cur_size--;

 }

 int check_num(int number) //查找一个数,找到返回找到的序列值,反则返回-1

 {

  for(int i=0;i<cur_size;i++)

  {

   if(number == val[i])

    return i;

  }

  return -1;

 }

 void setmaxsize(int maxsize)

 {

  if(maxsize<=0)

   return;

  if(val != NULL)

  {

   delete []val;

  }

  val = new int[maxsize];

  max_size = maxsize;

  cur_size = 0;

 }

 

//  int_set &operator<< (const int_set &a)  //这个放在这儿也可以

//  {

//   this->setmaxsize(a.max_size);

//   for(int i=0;i<a.cur_size;i++)

//    this->add_num(a.val[i]);

//   return *this;

//     }

 

 

};

int_set &operator<< (int_set &B,const int_set &A)

{

 B.setmaxsize(A.max_size);

 for(int i=0;i<A.cur_size;i++)

  B.add_num(A.val[i]);

 return B;

}

ostream& operator>> (ostream& pout,const int_set &A){

 pout<<"{";

 for(int i=0;i<A.cur_size;i++)

 { 

  if(i!=0)

   pout<<",";

  pout<<A.val[i];

 }

 pout<<"}";

 

 return pout;

}

void intersection (const int_set &A,const int_set &B,int_set &C)

{

 int i,j;

 int_set CC;

 CC.setmaxsize(A.cur_size+B.cur_size);

 for(i=0;i<A.cur_size;i++)

 {

  for(j=0;j<B.cur_size;j++)

  {

   if(A.val[i] == B.val[j])

   {

    CC.add_num(A.val[i]);

    break;

   }

  }

 }

 C.setmaxsize(CC.cur_size);

 for(i=0;i<CC.cur_size;i++)

  C.add_num(CC.val[i]);

 

}

void unions (const int_set &A,const int_set &B,int_set &C)

{

 int i;

 int_set CC;

 CC.setmaxsize(A.cur_size+B.cur_size);

 for(i=0;i<A.cur_size;i++)

  CC.add_num(A.val[i]);

 for(i=0;i<B.cur_size;i++)

  CC.add_num(B.val[i]);

 

 C.setmaxsize(CC.cur_size);

 for(i=0;i<CC.cur_size;i++)

  C.add_num(CC.val[i]);

 

}

void subtraction (const int_set &A, int_set &B,int_set &C)

{

 int_set CC;

 CC.setmaxsize(A.cur_size);

 for(int i=0;i<A.cur_size;i++)

 {

  int val = A.val[i];

  if( -1 == B.check_num(val)  )// 如果B没有

   CC.add_num(val);

 }

 C.setmaxsize(CC.cur_size);

 for(i=0;i<CC.cur_size;i++)

  C.add_num(CC.val[i]);

}

void main()

{

 int i;

 int_set A,B,C,D;

 A.setmaxsize(10);

 C.setmaxsize(20);

 for(i=0;i<10;i++)

  A.add_num(i);

 

 for(i=0;i<20;i++)

  C.add_num(i*2);

 B<<A;

 cout<<"A = ">>A<<endl;

 cout<<"B = ">>B<<endl;

 cout<<"C = ">>C<<endl;

 intersection(A,C,D);

 cout<<"A ∩ C = ">>D<<endl;

 unions(A,C,D);

 cout<<"A ∪ C = ">>D<<endl;

 subtraction(A,C,D);

 cout<<"A - C = ">>D<<endl;

 cout<<"\nover\n";

}

 

 

 

 

追问
有没有可以自己输入a和b集合的方法!!还有好像增加和删除一个元素没编。求继续帮忙,感激不尽!!!
追答
增加一个元素? add_num() 
删除一个元素 del_num()
你没有看见么?在类里面实现了。难道你不是要再类里面实现?

自己输入集合的方法?可以啊
我给你改下main()就可以了

void main()
{
int i;
int_set A,B,C,D;

int count ;
cout>count;
A.setmaxsize(count);
cout>count;
cout>x;
A.add_num(x);
}
cout>count;
B.setmaxsize(count);

cout>count;
cout>x;
B.add_num(x);
}

C>A>B>C>D>D>D<<endl;

}
孤の漃113095a
2012-07-03 · TA获得超过135个赞
知道小有建树答主
回答量:305
采纳率:0%
帮助的人:154万
展开全部
C++里有一个 文件叫set 里面就是你说的这个。。 你include <set> 然后去看看微软的人是怎么写的 ~ 学一下~
更多追问追答
追问
没学过set,可以用iostream.h编一下吗?谢谢
追答
C++是iostream 不是.h   C才是.h   . 我没时间写。 不过思路很简单  写一个类 类里面保存int数组 ~ 写一个push函数 ~ 增加一个数字到数组里面 。 remove函数删掉 。 find函数判断 。。其实很简单 。就在数组中找就是了。 只是把数组的内存管理需要用心 因为你不知道数组会有多大。。  重载的2个运算符更没难度 for循环输出一下就行了。。 只是 | & ~ 这3个运算符需要动一下脑筋~  。。 比较一下 类里面的数组就是了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wrx91
2012-07-03 · 超过18用户采纳过TA的回答
知道答主
回答量:125
采纳率:0%
帮助的人:67.9万
展开全部
自己百度搜。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式