OJ 1011 复数类

来源:互联网 发布:网络拍卖平台 编辑:程序博客网 时间:2024/05/21 08:18

题目是这样的:

       写一个复数类,实现以下程序主函数中所需要的功能。

          

     MyComplex z1;

     MyComplex z2;

    

     cin >> z1 >> z2;

    

     cout << z1 + z2 <<endl;

     cout << z1 - z2 <<endl;

     cout << z1 * z2 <<endl;

     cout << z1 / z2 <<endl;

     cout << (z1 += z2) <<endl;

     cout << (z1 -= z2) <<endl;

     cout << (z1 *= z2) <<endl;

     cout << (z1 /= z2) <<endl;

          MyComplex类的数据成员包括double x, double y;
       
         这道题目用C++或者与之类似的面向对象语言(Java,Python)来写很简单,就是运算符的重载
         这道题涉及到二元运算符+ - * /以及赋值运算符 += -= *= /=
         基本代码如下(提醒:在进行复数运算操作的时候赋值运算符的重载尤其是对*= /=的重载可以转换为a=a*b,a=a/b;在复数中*和/赋值给对象的数据成员的时候,比如Z1*=Z2,此时计算Z1.x时其中存在Z1.y,计算Z1.y的时候存在Z1.x,那么就一定要根据计算的先后顺序保留一个对象成员不被改变)
        
#include <iostream>#include <iomanip>using namespace std;class MyComplex{private:    double x,y;public:    MyComplex(){}    MyComplex(double in1,double in2);    MyComplex operator+(MyComplex &z2);    MyComplex operator-(MyComplex &z2);    MyComplex operator*(MyComplex &z2);    MyComplex operator/(MyComplex &z2);    MyComplex& operator+=(MyComplex &z2);    MyComplex& operator-=(MyComplex &z2);    MyComplex& operator*=(MyComplex &z2);    MyComplex& operator/=(MyComplex &z2);    void display();};MyComplex::MyComplex(double in1,double in2){    this->x=in1;    this->y=in2;}MyComplex MyComplex::operator+(MyComplex &z2){    MyComplex z1;    z1.x=this->x+z2.x;    z1.y=this->y+z2.y;    return z1;}MyComplex MyComplex::operator-(MyComplex &z2){    MyComplex z1;    z1.x=this->x-z2.x;    z1.y=this->y-z2.y;    return z1;}MyComplex MyComplex::operator*(MyComplex &z2){    MyComplex z1;    z1.x=this->x*z2.x-this->y*z2.y;    z1.y=this->x*z2.y+z2.x*this->y;    return z1;}MyComplex MyComplex::operator/(MyComplex &z2){    MyComplex z1;    z1.x=(x*z2.x+y*z2.y)/(z2.x*z2.x+z2.y*z2.y);    z1.y=(y*z2.x-x*z2.y)/(z2.x*z2.x+z2.y*z2.y);    return z1;}void MyComplex::display(){    cout<<x<<" "<<y<<endl;}MyComplex& MyComplex::operator+=(MyComplex &z2){    this->x+=z2.x;    this->y+=z2.y;    return *this;}MyComplex& MyComplex::operator-=(MyComplex &z2){    this->x-=z2.x;    this->y-=z2.y;    return *this;}MyComplex& MyComplex::operator*=(MyComplex &z2){    MyComplex z1;    z1.x=this->x;//保留thi->x    this->x=this->x*z2.x-this->y*z2.y;    this->y=z1.x*z2.y+this->y*z2.x;    return *this;}MyComplex& MyComplex::operator/=(MyComplex &z2){    MyComplex z1;    z1.x=this->x;//保留this->x不被改变    this->x=(this->x*z2.x+this->y*z2.y)/(z2.x*z2.x+z2.y*z2.y);    this->y=(this->y*z2.x-z1.x*z2.y)/(z2.x*z2.x+z2.y*z2.y);    return *this;}int main(int argc, const char * argv[]) {    // insert code here...    //std::cout << "Hello, World!\n";    double x,y;    cin>>x>>y;    MyComplex c1(x, y);    cin>>x>>y;    MyComplex c2(x,y);    MyComplex c3;    cout<<setiosflags(ios::fixed);//设置精度    cout<<setprecision(2);    c3=c1+c2;    c3.display();    c3=c1-c2;    c3.display();    c3=c1*c2;    c3.display();    c3=c1/c2;    c3.display();    cout<<endl;    c1+=c2;    c1.display();    c1-=c2;    c1.display();    c1*=c2;    c1.display();    c1/=c2;    c1.display();    return 0;}
运行结果如下:
         

0 0
原创粉丝点击