c++程序入門(三)——用結構和類分別實現複數加法和乘法

問題描述:分別使用結構和類編程實現複數加減法

/*使用複數結構,編寫通用函數求兩個複數的和和積*/
struct complex
{
    int real;
    int im;
};

struct complex cadd(struct complex c1,struct complex c2);
struct complex cadd(struct complex c1,struct complex c2) 
//現在cadd是一個返回類型是struct complex的函數
{
    struct complex result;
    result.real=c1.real+c2.real;
    result.im=c1.im+c2.im;
    return result;

}

struct complex cmult(struct complex c1, struct complex c2);

struct complex cmult(struct complex c1, struct complex c2)
{
    struct complex result;
    result.real = c1.real*c2.real - c1.im*c2.im;
    result.im = c1.real*c2.im + c1.im*c2.real;
    return result;
}

//編寫結果輸出函數
void puts(struct complex c);
void puts(struct complex c)
{
    cout<<c.real<<"+("<<"i*"<<c.im<<")"<<endl;
}
int main()
{
    struct complex c1,c2,c3;
    while(cin>>c1.real&&cin>>c1.im&&cin>>c2.real&&cin>>c2.im)
    {
        c3=cadd(c1,c2);
        puts(c3);
        c3=cmult(c1,c2);
        puts(c3);
    }
    cin.get();
}

/*用類來實現複數的加法和乘法*/

class complex
{
public:
    int real;
    int im;
//   complex(int m=0,int n=0);

    void set_c(int m,int n);
    void cadd(complex c1, complex c2);
    void cmult(complex c1,complex c2);
    void put();
};

//complex::complex(int m,int n)
//{
//  real = m;
//  im = n;
//}

void complex::set_c(int m, int n)
{
    real = m; 
    im = n;
}
void complex::cadd(complex c1, complex c2)
{
    real = c1.real + c2.real;
    im = c1.im + c2.im;
}

void complex::cmult(complex c1,complex c2)
{   
    real = c1.real*c2.real - c1.im*c2.im;
    im = c1.real *c2.im + c2.real*c1.im;
}
void complex::put()
{
    cout<<real<<"+(i*"<<im<<")"<<endl;
}

int main()
{
    complex c1,c2,c3;
    int r1,i1,r2,i2;
    while(cin>>r1 && cin>>i1 &&cin>>r2 &&cin>>i2)
    {
        c1.set_c(r1,i1);
        c1.put();
        c2.set_c(r2,i2);
        c2.put();
        c3.cadd(c1,c2);
        c3.put();
        c3.cmult(c1,c2);
        c3.put();
    }
    cin.get();
}

用友元實現:

//*******用類和友元函數實現複數加減和乘除******/

class complex
{
    float real;
    float im;
public:
    complex(float m=0,float n=0);
    void set_c(float m,float n);
    //這裏使用友元函數
    friend complex cadd(complex c1,complex c2);
    friend complex cmult(complex c1,complex c2);
    void put();

};
complex cadd(complex c1,complex c2)
{
    complex c3;
    c3.real=c1.real+c2.real;
    c3.im = c1.im+c2.im;
    return c3;
}
complex cmult(complex c1,complex c2)
{
    complex c3;
    c3.real = c1.real*c2.real -c1.im*c2.im;
    c3.im = c1.real*c2.im+c1.im*c2.real;
    return c3;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章