• 1011. 复数类


    http://acm.sjtu.edu.cn/OnlineJudge/problem/1011

    学习了C++重载的写法。

      1 # include <iomanip>
      2 # include <iostream>
      3 
      4 using namespace std;
      5 
      6 class MyComplex{
      7     double real;
      8     double imag;
      9 
     10     friend istream &operator>>(istream & input, MyComplex & z) {
     11         input >> z.real >> z.imag ;
     12         return input;
     13     }
     14     friend ostream &operator<<(ostream & output, const MyComplex & z) {
     15         output.precision(2);
     16         output << fixed << z.real << ' ' << fixed << z.imag ;
     17         return output;
     18     }
     19 
     20 public:
     21 //    MyComplex(){
     22 //        real = 0;
     23 //        imag = 0;
     24 //    }
     25     MyComplex(double real = 0, double imag = 0) {
     26         this->real = real;
     27         this->imag = imag;
     28     }
     29     const MyComplex operator+(MyComplex &);
     30     const MyComplex operator-(MyComplex &);
     31     const MyComplex operator*(MyComplex &);
     32     const MyComplex operator/(MyComplex &);
     33     const MyComplex operator+=(MyComplex &);
     34     const MyComplex operator-=(MyComplex &);
     35     const MyComplex operator*=(MyComplex &);
     36     const MyComplex operator/=(MyComplex &);
     37 };
     38 
     39 const MyComplex MyComplex::operator+(MyComplex &rz)
     40 {
     41     MyComplex ret;
     42     ret.real = real + rz.real;
     43     ret.imag = imag + rz.imag;
     44     return ret;
     45 }
     46 
     47 const MyComplex MyComplex::operator-(MyComplex & rz)
     48 {
     49     MyComplex ret;
     50     ret.real = real - rz.real;
     51     ret.imag = imag - rz.imag;
     52     return ret;
     53 }
     54 
     55 const MyComplex MyComplex::operator*(MyComplex & rz)
     56 {
     57     MyComplex ret;
     58     ret.real = real*rz.real - imag*rz.imag;
     59     ret.imag = real*rz.imag + rz.real*imag;
     60     return ret;
     61 }
     62 
     63 const MyComplex MyComplex::operator/(MyComplex & rz)
     64 {
     65     MyComplex ret;
     66     double m2 = rz.real*rz.real + rz.imag*rz.imag;
     67     ret.real = real*rz.real + imag*rz.imag;
     68     ret.imag = rz.real*imag - real*rz.imag;
     69     ret.real /= m2;
     70     ret.imag /= m2;
     71     return ret;
     72 }
     73 
     74 const MyComplex MyComplex::operator+=(MyComplex & rz)
     75 {
     76 
     77     return (*this) = (*this) + rz;
     78 }
     79 
     80 const MyComplex MyComplex::operator-=(MyComplex & rz)
     81 {
     82     return (*this) = (*this) - rz;
     83 }
     84 
     85 const MyComplex MyComplex::operator*=(MyComplex & rz)
     86 {
     87     return (*this) = (*this) * rz;
     88 }
     89 
     90 const MyComplex MyComplex::operator/=(MyComplex & rz)
     91 {
     92     return (*this) = (*this) / rz;
     93 }
     94 
     95 int main()
     96 {
     97     MyComplex z1;
     98     MyComplex z2;
     99 
    100     cin >> z1 >> z2;
    101 
    102     cout << z1 + z2 << endl;
    103     cout << z1 - z2 << endl;
    104     cout << z1 * z2 << endl;
    105     cout << z1 / z2 << endl;
    106     cout << (z1 += z2) << endl;
    107     cout << (z1 -= z2) << endl;
    108     cout << (z1 *= z2) << endl;
    109     cout << (z1 /= z2) << endl;
    110 
    111     return 0;
    112 }
  • 相关阅读:
    详细版Jmeter随机参数的接口并发测试总结
    Windows下MQTT代理服务器的搭建
    关于使用elascticsearch的两个小技巧
    解决easyswoole的swServer_start_check: onTask event callback must be set at报错
    解决使用宝塔安装的swoole扩展,运行项目出现的3个常见问题
    浅谈一下ThinkPHP5.1实现事务嵌套的特性
    资源出现多个 "Access-Control-Allow-Origin"
    Mac 制作系统启动盘
    深入剖析分布式一致性共识算法
    分布式系统限流算法分析与实现
  • 原文地址:https://www.cnblogs.com/txd0u/p/3358319.html
Copyright © 2020-2023  润新知