有个错误改不过来

gtltxyz 2003-05-30 04:20:47
我写了一个有关运算符重载来操作集合交并的程序,但编译器说有个系统错误,我检查不出来在哪里。望高手指点迷津!!源程序如下。
#include <iostream>
const max=16;
using namespace std;
enum errcode {noerr,overflow};

class set{
int elems[max];
int card;
public:
set(){card=0;}
errcode addelem(int);
void print();
friend bool operator &(int,set);
friend set operator *(set,set);
friend set operator +(set,set);
};

errcode set::addelem(int elem)
{
for(int i=0;i<card;i++)
if(elem[i]==elem)
return noerr;
if(card<max)
{
elems[card++]=elem;
return noerr;
}
else return overflow;
}

void set::print()
{
cout<<"{";
for(int i=0;i<card-1;i++)
cout<<elems[i]<<",";
if(card>0)
cout<<elems[card-1]<<"}\n";
}

bool operator & (int elem,set set)
{
for(int i=0;i<set.card;++i)
if(set.elem[i]==elem) return true;
return false;
}

bool operator * (set set1,set set2)
{
set res;
for(int i=0;i<set1.card;i++)
for(int j=0;j<set2.card;j++)
if(set.elems[i]==set2.elems[j])
{
res.elems[res.card++]=set1.elems[i];
break;
}
return res;
}

set operator + (set set1,set set2)
{
set res=set1;
for(int i=0;i<set2.card;i++)
res.addelem(set2.elems[i]);
return res;
}

main()
{
set set1,set2,set3,set4;
set1.addelem(30);
set1.addelem(20);
set1.addelem(40);
set1.addelem(60);
set1.addelem(70);
set1.addelem(90);
set1.addelem(390);
set1.addelem(49);
set2.addelem(39);
set2.addelem(40);
set2.addelem(50);
set2.addelem(60);
set2.addelem(78);
set2.addelem(480);
set2.addelem(290);
set2.addelem(77);
cout<<"set1 set:";
set1.print();
cout<<"\n"<<"set2 set:";
set2.print();
if(20 &set1)cout<<"set1 contains 20\n";
set3=set1*set2;
cout<<"the intersection of set1 and set2 is:";
set3.print();
set4=set1+set2;
cout<<"the union of set1 and set2 is:";
set4.print();
return 1;
}


...全文
24 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
greening 2003-06-01
  • 打赏
  • 举报
回复
第二排 const max=16; 改成 const int max=16;
idontlikenickname 2003-05-30
  • 打赏
  • 举报
回复
bool operator * (set set1,set set2) // bool改为set
{
set res;
for(int i=0;i<set1.card;i++)
for(int j=0;j<set2.card;j++)
if(set.elems[i]==set2.elems[j])
{
res.elems[res.card++]=set1.elems[i];
break;
}
return res;
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧