【c++】第十二周上机实践作业 项目 1-3

/*
 *copyright(c) 2016,烟台大学计算机学院
 *All rights reserved
 *文件名称:test.cpp
 *作者:谭泽纯
 *版本:v6.0
 *
 *问题描述: 

(1)定义一个定义完整的类(是可以当作独立的产品发布,成为众多项目中的“基础工程”)。这样的类在(2)的基础上,扩展+、-、*、/运算符的功能,使之能与double型数据进行运算。设Complex c; double d; c+d和d+c的结果为“将d视为实部为d的复数同c相加”,其他-、*、/运算符类似。 

<code class="hljs cpp has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> Complex { <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span>: Complex(){real=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;imag=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;} Complex(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">double</span> r,<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">double</span> i){real=r; imag=i;} Complex <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">operator</span>+(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">const</span> Complex &c2); Complex <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">operator</span>-(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">const</span> Complex &c2); Complex <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">operator</span>*(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">const</span> Complex &c2); Complex <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">operator</span>/(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">const</span> Complex &c2); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> display(); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span>: <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">double</span> real; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">double</span> imag; }; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//下面定义成员函数</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//下面定义用于测试的main()函数</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> main() { Complex c1(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>),c2(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>,-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span>),c3; <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"c1="</span>; c1.display(); <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"c2="</span>; c2.display(); c3=c1+c2; <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"c1+c2="</span>; c3.display(); c3=c1-c2; <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"c1-c2="</span>; c3.display(); c3=c1*c2; <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"c1*c2="</span>; c3.display(); c3=c1/c2; <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"c1/c2="</span>; c3.display(); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li></ul>

  


*/



  1. //主函数参考老师
  2. #include <iostream>  
  3. using namespace std;  
  4. class Complex  
  5. {  
  6. public:  
  7.     Complex()  
  8.     {  
  9.         real=0;  
  10.         imag=0;  
  11.     }  
  12.     Complex(double r,double i)  
  13.     {  
  14.         real=r;  
  15.         imag=i;  
  16.     }  
  17.     friend Complex operator+(Complex &c1, Complex &c2);  
  18.     friend Complex operator+(double d1, Complex &c2);  
  19.     friend Complex operator+(Complex &c1, double d2);  
  20.     friend Complex operator-(Complex &c1, Complex &c2);  
  21.     friend Complex operator-(double d1, Complex &c2);  
  22.     friend Complex operator-(Complex &c1, double d2);  
  23.     friend Complex operator*(Complex &c1, Complex &c2);  
  24.     friend Complex operator*(double d1, Complex &c2);  
  25.     friend Complex operator*(Complex &c1, double d2);  
  26.     friend Complex operator/(Complex &c1, Complex &c2);  
  27.     friend Complex operator/(double d1, Complex &c2);  
  28.     friend Complex operator/(Complex &c1, double d2);  
  29.     void display();  
  30. private:  
  31.     double real;  
  32.     double imag;  
  33. };  
  34.   
  35. //自己写  
  36. Complex operator+(Complex &c1, Complex &c2)  
  37. {  
  38.    
  39.     return Complex(c1.real+c2.real,c1.imag+c2.imag);  
  40. }  
  41. Complex operator+(double d1, Complex &c2)  
  42. {  
  43.     return Complex(d1+c2.real,c2.imag);  
  44. }  
  45. Complex operator+(Complex &c1, double d2)  
  46. {        return Complex(d2+c1.real,c1.imag); 
  47. }  
  48. Complex operator-(Complex &c1, Complex &c2)  
  49. {  
  50.     return Complex(c1.real-c2.real,c1.imag-c2.imag); 
  51. }  
  52. Complex operator-(double d1, Complex &c2)  
  53. {  
  54.     return Complex(d1-c2.real,-c2.imag);  
  55. }  
  56. Complex operator-(Complex &c1, double d2)  
  57. {  
  58.     return Complex(c1.real-d2,c1.imag); 
  59. }  
  60.   
  61. Complex operator*(Complex &c1, Complex &c2)  
  62. {  
  63.     return Complex(c1.real*c2.real-c1.imag*c2.imag,c1.imag*c2.real+c1.real*c2.imag);
  64. }  
  65. Complex operator*(double d1, Complex &c2)  
  66. {  
  67.      return Complex(c2.imag*d1,c2.real*d1);  
  68. }  
  69. Complex operator*(Complex &c1, double d2)  
  70. {

  71.     return Complex(c1.imag*d1,c1.real*d1); 
  72. }  
  73.    
  74. Complex operator/(Complex &c1, Complex &c2)  
  75. {  
  76.     return Complex((c1.real*c2.real+c1.imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag),(c1.imag*c2.real-c1.real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag));
  77. }  
  78. Complex operator/(double d1, Complex &c2)  
  79. {  
  80.       return Complex (d1/c2.real,c2.imag);
  81. }  
  82. Complex operator/(Complex &c1, double d2)  
  83. {  
  84.      return Complex (c2.real/d2,c2.imag); 
  85. }  
  86.   
  87. void Complex::display()  
  88. {  
  89.     cout<<real<<"  "<<imag<<endl;  
  90. }  
  91.   
  92. int main()  
  93. {  
  94.     Complex c1(3,4),c2(5,-10),c3;  
  95.     double d=11;  
  96.     cout<<"c1=";  
  97.     c1.display();  
  98.     cout<<"c2=";  
  99.     c2.display();  
  100.     cout<<"d="<<d<<endl<<endl;  
  101.     cout<<"下面是重载运算符的计算结果: "<<endl;  
  102.     c3=c1+c2;  
  103.     cout<<"c1+c2=";  
  104.     c3.display();  
  105.     cout<<"c1+d=";  
  106.     (c1+d).display();  
  107.     cout<<"d+c1=";  
  108.     (d+c1).display();  
  109.     c3=c1-c2;  
  110.     cout<<"c1-c2=";  
  111.     c3.display();  
  112.     cout<<"c1-d=";  
  113.     (c1-d).display();  
  114.     cout<<"d-c1=";  
  115.     (d-c1).display();  
  116.     c3=c1*c2;  
  117.     cout<<"c1*c2=";  
  118.     c3.display();  
  119.     cout<<"c1*d=";  
  120.     (c1*d).display();  
  121.     cout<<"d*c1=";  
  122.     (d*c1).display();  
  123.     c3=c1/c2;  
  124.     cout<<"c1/c2=";  
  125.     c3.display();  
  126.     cout<<"c1/d=";  
  127.     (c1/d).display();  
  128.     cout<<"d/c1=";  
  129.     (d/c1).display();  
  130.     return 0;  
  131. }  

  1.     return Complex(c1.real+c2.real,c1.imag+c2.imag);  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值