| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1127 人关注过本帖
标题:一个关于元素集合的问题
只看楼主 加入收藏
liuhippo
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2004-8-20
收藏
 问题点数:0 回复次数:9 
一个关于元素集合的问题

菜鸟问题,小弟刚学c++,下面的题是老师这个周布置的作业,偶一点思路都没有,希望高手给点提示什么的,小弟先谢谢大家了!!!!!

设计一个集合(Set)类。Set可以包含令个或多个无序的非重复的int型元素。共有接口包括如下成员函数:

创建一个Set。

增加一个新元素到Set。

从Set中删除一个元素。

列举Set中的所有元素。

S1和S2都是Set对象,计算它们的交集。

S1和S2都是Set对象,计算它们的并集。

S1和S2都是Set对象,计算它们的差集。

[此贴子已经被kai于2004-10-14 22:13:21编辑过]

搜索更多相关主题的帖子: Set 元素 接口 对象 
2004-09-24 11:26
liuhippo
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2004-8-20
收藏
得分:0 

无语

看来论坛的人气真的是不旺阿

2004-09-25 21:30
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 

// 很久没写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; }


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-09-26 07:22
liuhippo
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2004-8-20
收藏
得分:0 

真心感谢斑竹,我以后会将我们的同学都带到我们这个论坛上来的。

我是学软件的,没学好我知道不能怪我的老师,可他们。。。。。。。。

我希望以后和大家多多交流,这样我们都会有所提高的!!!!

再次感谢斑竹!!!!!!!1

2004-09-26 19:40
kuangjingbo
Rank: 1
等 级:新手上路
帖 子:312
专家分:0
注 册:2004-4-24
收藏
得分:0 
kai 是这个版最敬业的斑竹

永不放弃!
2004-09-26 21:26
poppylx
Rank: 1
等 级:新手上路
帖 子:367
专家分:0
注 册:2004-9-27
收藏
得分:0 

哈 也是新来的

看到有这样好的斑竹真高兴

一定多带人来


动于心而静如水
2004-09-27 21:39
不过如此
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-12-5
收藏
得分:0 
怎么没有人做呢
那位大狭帮忙啊
正好我也想学写一下啊
2006-03-22 20:46
不过如此
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-12-5
收藏
得分:0 
斑竹太好了
谢谢你啊
2006-03-22 20:47
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
我还以为什么新的问题呢?进来一看,原来我还写过这种代码,哈哈哈,真是有意思啊。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-03-23 00:44
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
收藏
得分:0 

以后就跟kai混了 大哥收下我这个小弟吧

2006-03-25 16:03
快速回复:一个关于元素集合的问题
数据加载中...
 
   



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

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