一个运行错误的程序

现在错误已解决,把错了的程序贴在这里。以后深度研究。。

#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;
}

  

转载于:https://www.cnblogs.com/phoenix-route/archive/2013/03/31/2992345.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值