现在错误已解决,把错了的程序贴在这里。以后深度研究。。
#include <iostream>
using namespace std;
class Set
{
private:
int a[100];
int num;
public:
Set();
void add(const int aa);
void del(const int aa);
Set& operator +(Set& right);
Set& operator *(Set& right);
Set& operator =(Set& right);
Set& operator -=(Set& right);
void print();
};
Set::Set()
{
for(int i = 0; i<100; i++)
a[i] = 0;
num = 0;
}
void Set::print()
{
for(int i = 0; i<num; i++)
cout<<a[i]<<" ";
}
Set& Set::operator -=(Set& right)
{
int i,j;
for(i = 0; i<right.num; i++)
for(j = 0; j<num; j++)
{
if(a[j] == right.a[i] )
{
num--;
for(int m = j; m<num; m++)
a[m] = a[m+1];
}
}
return *this;
}
Set& Set::operator =(Set& right)
{
int i = 0;
num = right.num;
for(i = 0; i<num; i++)
a[i] = right.a[i];
return *this;
}
Set& Set::operator *(Set& right)
{
Set result;
int i,j;
result.num = num+right.num;
for( i = 0; i<num; i++)
result.a[i] = a[i];
for( j = 0; j<right.num; j++,i++)
result.add(right.a[j]);
return result;
}
Set& Set::operator +(Set& right)
{
Set re;
int i,j;
for(i = 0; i<num; i++)
re.a[i] = a[i];
for(j = 0; j<right.num; j++,i++)
re.a[i] = right.a[j];
re.num = num+right.num;
return re;
}
void Set::del(const int aa)
{
for(int i = 0; i<num; i++)
if(a[i] == aa)
{
for(int j = i; j<num; j++)
a[j] = a[j+1];
}
}
void Set::add(const int aa)
{
bool flag = 1;
if(num == 0)
{
a[num] = aa;
num++;
}
else
{
for(int i = 0; i<num; i++)
{
if(a[i]==aa)
flag = 0;
}
if(flag)
{
a[num] = aa;
num++;
}
}
}
int main()
{
int i;
Set a,b;
Set c;
for(i = 0; i<50; i++)
{
a.add(i);
}
a.print();
for(i = 20; i<50; i++)
{
b.add(i);
}
b.print();
c = a+b;
c.print();
return 0;
}