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
- OJ 1011 复数类
- 16 oj 复数类 重载运算符+
- 【OJ】---R---复数类--重载运算符+
- YTU-OJ- 复数类--重载运算符+
- YTU-OJ- 复数类--重载运算符+,-,*,/
- YTU-OJ-复数类--对象转换
- OJ --复数类 重载运算符+
- OJ-复数类-重载运算符+-*/
- OJ-复数类-重载运算符2
- OJ-复数类-重载运算符3+
- OJ复数类--重载运算符+
- oj--复数类--重载运算符3+
- 16 oj 复数类 重载运算符3+
- △【OJ】---S---复数类,重载运算符+,-,*,/
- 【OJ】---T---复数类,重载运算符2+
- YTU-OJ- 复数类--重载运算符2+
- YTU-OJ-复数类--重载运算符3+
- OJ——复数类--重载运算符+
- Eclipse快捷键大全(转载)
- 心塞的Xutil的用法
- [Android四大组件] Service详解,你不知道的都在这里
- js-dom元素操作
- C++头文件之:#ifndef #define #endif ,#ifdef __cplusplus extern "C" { #endif,__declspec(dllimport)
- OJ 1011 复数类
- 目标跟踪:KCF代码分析(matlab版本)
- CURL基础使用
- iOS路由跳转(三)之JKRouter基础教程2
- Flink的standalone 模式简单部署
- HDU
- js比较运算符
- 深度探索c++对象模型
- maven仓库-私服