首页 > 电脑

set函数中哪里有问题呀

更新时间2021-04-02 01:49:13

#include<iostream>
using namespace std;
class MySet{
 
   int s[10];   //整数集合
   int size;  //集合中有效元素的个数
public:
  MySet( int num =0);
  void set(int a[],int s); 
  bool add(int data);
  bool del(int date);
  MySet operator+(const MySet& M);//集合合并 
  MySet operator*(const MySet& M);// 交集 
  friend ostream& operator<<(ostream& out,const MySet& m);
};
MySet::MySet(int num)
{
size=num;
}
 
void MySet::set(int a[],int s)
{
int i;
for(i=0;i<s&&i<10;i++)
s[i]=a[i];
size=s;
}
bool MySet::add(int data)
{
int i;
for(i=0;i<size;i++)
{
if(data==s[i])
{
cout<<"增加数组元素失败"; 
return false;
    }
}
s[size]=data;
size++;
cout<<"添加数组元素后数组为:";
cout<<s;
return true;
}
bool MySet::del(int data)
{
int i,sign,j,_sign=0;//_sign标记数组是否存在date 
for(i=0;i<size;i++)
{
if(s[i]==data)
{
_sign=1;
sign=i;
for(j=sign;j<size;j++,size--)
s[j]=s[j+1]; 
}
}
if(_sign==1) 
{
cout<<"删除元素成功"<<endl<<"删除元素后数组为:";
cout<<s;
}
else
{
cout<<"删除元素失败"; 
return false;
}
}
MySet MySet::operator+(const MySet&M)
{
MySet m;
int i,j,count=0;
for(i=0;i<size;i++)
m.s[i]=s[i];
for(j=0;j<M.size;j++)
{
for(i=0;i<size;i++)
{
if(M.s[j]!=s[i]) 
count++;
else
break;
}
if(count==M.size)
   {
m.s[size]=M.s[j];
m.size++;
    }
    }
    return m;
}
MySet MySet::operator*(const MySet& M)
{
MySet m;
int i, j,count=0,z=0;
for(i=0;i<size;i++)
{
for(j=0;j<M.size;j++)
{
if(s[i]==m.s[j])
count++;
else 
break;
}
if(count==M.size)
{
m.s[z]=s[i];
z++;
    }
}
m.size=z;
return m;
}
ostream& operator<<(ostream& out,const MySet& m)
{
int i=0;
for(i=0;i<m.size;i++)
out<<m.s[i]<<" ";
return out;
}
int main()
{
int a[3]={2,3,4},b[5]={3,4,5,6,7};
MySet s1,s2,s3,s4;
s1.set(a,3);
s2.set(b,5);
s3=s1+s2;
cout<<s3;
s4=s1*s2;
cout<<s4;
s1.add(5);
s4.del(6);
return 0;
}

程序错的太多了,语法上

void MySet::set(int a[],int s) { int i; for(i=0;i<s&&i<10;i++) s[i]=a[i]; size=s; }

你的参数s与内部s混淆了,简单的改为

void MySet::set(int a[], int n) {    int i;    for(i = 0; i < n && i < 10; i++)        s[i] = a[i];    size = n; }

而合并算法完全不对

   for(i = 0; i < size; i++)        m.s[i] = s[i];

赋值后,m.size根本没有设置,长度为0

而后面的合并也不对

并集没有看

你自己先检查算法(毕竟是自己设计的),有问题再追问


上一篇:从键盘输入两个变量a和b,交换两个变量的值并输出

下一篇:小程序开发公司哪家好?