找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1840|回复: 9

一个关于元素集合的问题

[复制链接]
发表于 2009-11-2 04:34:24 | 显示全部楼层 |阅读模式 IP:江苏扬州
菜鸟问题,小弟刚学c++,下面的题是老师这个周布置的作业,偶一点思路都没有,希望高手给点提示什么的,小弟先谢谢大家了!!!!!
设计一个集合(Set)类。Set可以包含令个或多个无序的非重复的int型元素。共有接口包括如下成员函数:
创建一个Set。
增加一个新元素到Set。
从Set中删除一个元素。
列举Set中的所有元素。
S1和S2都是Set对象,计算它们的交集。
S1和S2都是Set对象,计算它们的并集。
S1和S2都是Set对象,计算它们的差集。
发表于 2009-11-2 04:34:30 | 显示全部楼层 IP:江苏扬州
无语
看来论坛的人气真的是不旺阿
回复

使用道具 举报

发表于 2009-11-2 04:34:35 | 显示全部楼层 IP:江苏扬州
// 很久没写C++ 程序了,写的不对的地方请指出
#include <iostream> #include <cstdio> using namespace std;
class Set { private: int * element; int n; public: Set(){ element = NULL; n = 0;} Set(int * e, int size) { n = size; element = new int[n]; memcpy(element, e, n*sizeof(int)); } void creat(int * e, int size) { if(element) delete [] element; n = size; element = new int[n]; memcpy(element, e, n*sizeof(int)); } void insertElement(int e) { bool no_same = true; int * temp = NULL; if(n == 0) { n = 1; element = new int; *element = e; } else { for(int i = 0; i<n; i++) { if(element[i] != e) continue; else { no_same = false; break; } } if(no_same) { n++; temp = new int[n]; //memset(temp, 0, n*sizeof(int)); memcpy(temp, element, (n-1)*sizeof(int)); temp[n-1] = e; delete [] element; element = new int[n]; memcpy(element, temp, n*sizeof(int)); delete [] temp; } } } void eraseElement(int e) { bool no_same = true; int * temp = NULL; int pos = 0; for(int i = 0; i<n; i++) { if(element[i] != e) continue; else { no_same = false; pos = i; break; } } if(!no_same) { temp = new int[--n]; memcpy(temp, element, pos*sizeof(int)); memcpy(temp+pos, element+pos+1, (n-pos)*sizeof(int)); delete [] element; element = new int[n]; memcpy(element, temp, n*sizeof(int)); delete [] temp; } } void showElement() { for(int i = 0; i<n; i++) { cout<<element[i]<<" "; //if((i+1)%6 == 0) // cout<<endl; } } int * getInfo(int & nOfElement) { nOfElement = n; return element; } Set(Set & s) { if(element) { delete [] element; n = 0; } int * e_s = NULL, n_s = 0; e_s = s.getInfo(n_s); element = new int[n_s]; n = n_s; memcpy(element, e_s, n*sizeof(int)); } void jiaoji(Set & sx, Set & jiaoji) { int * e_sx = NULL, n_sx = 0; e_sx = sx.getInfo(n_sx); int n_min = n<n_sx?n:n_sx; int * temp = new int[n_min]; int n_temp = 0; for(int i = 0; i<n_sx; i++) { for(int j = 0; j<n; j++) { if(element[j] == e_sx[i]) { temp[n_temp] = element[j]; if(n_temp<n_min) n_temp++; } } } jiaoji.creat(temp, n_temp); delete [] temp; } void bingji(Set & sx, Set & bingji) { int * e_sx = NULL, n_sx = 0; e_sx = sx.getInfo(n_sx); int n_max = n + n_sx; //n>n_sx?n:n_sx; int * temp = new int[n_max]; memcpy(temp, element, n*sizeof(int)); bool nicht_vorkommen = true; int n_temp = n; for(int i = 0; i<n_sx; i++) { for(int j = 0; j<n; j++) { if(e_sx[i] != element[j]) continue; else { nicht_vorkommen = false; break; } } if(nicht_vorkommen) { temp[n_temp] = e_sx[i]; n_temp++; } nicht_vorkommen = true; } bingji.creat(temp, n_temp); delete [] temp; } void caji(Set & sx, Set & caji) { int * e_sx = NULL, n_sx = 0; caji.creat(element, n);
e_sx = sx.getInfo(n_sx); for(int i = 0; i<n_sx; i++) { for(int j = 0; j<n; j++) { if(e_sx[i] == element[j]) caji.eraseElement(e_sx[i]); } } } ~Set() { if(element) { delete [] element; n = 0; } } };
int main() { int source1[6] = {1,2,3,4,5,6}; int source2[6] = {4,5,6,7,8,9}; Set s1(source1, 6); Set s2; Set jiaoji, bingji, caji; s2.creat(source2, 6);
s1.insertElement(8); s2.insertElement(66);
s1.eraseElement(2); s1.eraseElement(3); s1.jiaoji(s2, jiaoji); s1.bingji(s2, bingji); s2.caji(s1, caji);
cout<<"The element of s1: "; s1.showElement(); cout<<endl; //------------------------------ cout<<"The element of s2: "; s2.showElement(); cout<<endl; //------------------------------ cout<<"The element of jiaoji: "; jiaoji.showElement(); cout<<endl; //------------------------------ cout<<"The element of bingji: "; bingji.showElement(); cout<<endl; //------------------------------ cout<<"The element of caji: "; caji.showElement(); cout<<endl; system("pause"); return 0; }
回复

使用道具 举报

发表于 2009-11-2 04:34:39 | 显示全部楼层 IP:江苏扬州
真心感谢斑竹,我以后会将我们的同学都带到我们这个论坛上来的。
我是学软件的,没学好我知道不能怪我的老师,可他们。。。。。。。。
我希望以后和大家多多交流,这样我们都会有所提高的!!!!
再次感谢斑竹!!!!!!!1
回复

使用道具 举报

发表于 2009-11-2 04:34:43 | 显示全部楼层 IP:江苏扬州
kai 是这个版最敬业的斑竹
回复

使用道具 举报

发表于 2009-11-2 04:34:49 | 显示全部楼层 IP:江苏扬州
哈 也是新来的
看到有这样好的斑竹真高兴
一定多带人来
回复

使用道具 举报

发表于 2009-11-2 04:34:55 | 显示全部楼层 IP:江苏扬州
怎么没有人做呢
那位大狭帮忙啊
正好我也想学写一下啊
回复

使用道具 举报

发表于 2009-11-2 04:35:00 | 显示全部楼层 IP:江苏扬州
斑竹太好了
谢谢你啊
回复

使用道具 举报

发表于 2009-11-2 04:35:04 | 显示全部楼层 IP:江苏扬州
我还以为什么新的问题呢?进来一看,原来我还写过这种代码,哈哈哈,真是有意思啊。
回复

使用道具 举报

发表于 2009-11-2 04:35:12 | 显示全部楼层 IP:江苏扬州
以后就跟kai混了 大哥收下我这个小弟吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 15:19 , Processed in 0.325051 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表