Advertisement
Guest User

prg

a guest
Mar 28th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.26 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. // sa se - unar care schimba semn partii imaginare complex si inmaginar
  5. //complex.h
  6. class complex{
  7. double re, im;
  8. public:
  9. complex (double n1=0, double n2=0);
  10. void af() const; //met constanta
  11. friend void af(complex);
  12. //+ aduna 2 complecsi
  13. // complex operator+(complex);
  14. friend complex operator+(complex, complex);
  15. //* inmult a 2 complecsi
  16. //complex operator * (complex);
  17. friend complex operator*(complex, complex);
  18.  
  19. // a*c (a real, c complex, rez complex)
  20. friend complex operator*(double, complex);
  21. //== (compara 2 complecsi)
  22. int operator==(complex);
  23. //-- decrem (p reala si p imag)
  24. //f prefix
  25. complex & operator--();//f prefix
  26. complex operator--(int);//f postf
  27. friend ostream& operator<<(ostream&, const complex&);
  28. friend istream& operator>>(istream&, complex&);
  29.  
  30. friend complex operator/(double, complex);
  31.  
  32. friend complex operator/(complex, complex);
  33. };
  34.  
  35. //complex.cpp
  36. complex::complex(double n1, double n2)
  37. {
  38. re = n1; im = n2;
  39. }
  40.  
  41. void complex::af( ) const
  42. {
  43. cout<<this->re<<" +i*"<<im<<endl;
  44. }
  45.  
  46. void af( complex c)
  47. {
  48. cout<<c.re<<" +i*"<<c.im<<endl;
  49. }
  50.  
  51. /***
  52. complex complex::operator+( complex z2)
  53. {
  54. // s = ob.ct + z2friend complex operator*(double, complex);
  55. complex s;
  56. s.re = re + z2.re;
  57. s.im = im + z2.im;
  58. //s.im = this->im + z2.im;
  59. return s;
  60. }
  61. ****/
  62.  
  63. complex operator+(complex z1, complex z2)
  64. {
  65. // s = z1+z2
  66. complex s;
  67. s.re = z1.re + z2.re;
  68. s.im = z1.im + z2.im;
  69. return s;
  70. }
  71.  
  72. /***
  73. complex complex::operator*(complex z)
  74. {
  75. // p = ob.ct * z
  76. complex p;
  77. p.re = re*z.re - im*z.im;
  78. p.im = re*z.im + im*z.re;
  79. return p;
  80. }
  81. ****/
  82. complex operator*(complex x, complex y)
  83. {
  84. // p = x * y
  85. complex p;
  86. p.re = x.re*y.re - x.im*y.im;
  87. p.im = x.re*y.im + x.im*y.re;
  88. return p;
  89.  
  90. }
  91.  
  92. complex operator/(complex x, complex y)
  93. {
  94. // p = x * y
  95. complex p;
  96. p.re = (((x.re)*(y.re))+((x.im)*(y.im)))/(pow(y.re,2)+pow(y.im,2));
  97. p.im = (((y.re)*(x.im))-((x.re)*(y.im)))/(pow(y.re,2)+pow(y.im,2));
  98. return p;
  99.  
  100. }
  101.  
  102. complex operator*(double a, complex c)
  103. {
  104. //p = a * c
  105. complex p;
  106. p.re = a*c.re;
  107. p.im = a*c.im;
  108. return p;
  109.  
  110. }
  111. complex operator/(double a, complex c)
  112. {
  113. //p = a * c
  114. complex p;
  115. p.re = a/c.re;
  116. p.im = a/c.im;
  117. return p;
  118. }
  119.  
  120.  
  121. int complex::operator==(complex z)
  122. {
  123. //ob.ct == z (???)
  124. if ((re == z.re) && (im == z.im))
  125. return 1;
  126. else
  127. return 0;
  128. }
  129.  
  130. complex & complex::operator--() //f prefix
  131. {
  132. re--; im--;
  133. return *this;
  134. }
  135.  
  136. complex complex::operator--(int) //f postf
  137. {
  138. complex r = *this;
  139. re--; im--;
  140. return r;
  141. }
  142.  
  143. ostream& operator<<(ostream & mon, const complex &c)
  144. {
  145. mon<<c.re<<" +i*"<<c.im<<"\n";
  146. return mon;
  147. }
  148.  
  149. istream& operator>>(istream& tast, complex &c)
  150. {
  151. tast>>c.re>>c.im;
  152. return tast;
  153.  
  154. }
  155.  
  156. //test.cpp
  157. int main()
  158. {
  159. /* complex a;
  160. complex b(1.1, 2.2);
  161. complex c=complex();//apel explicit al constructorului
  162. a.af();
  163. af(b);
  164. complex d(100, 200);
  165. c = b+d;
  166. //c = b.operator+(d); //apel explicit ptr metoda operator+
  167. c.af();
  168. c = b*d;
  169. c.af();
  170. a = 5.5 * c;
  171. a.af();
  172. d = a; //atribuire (nu e suprainc de catre progr); implcit
  173. cout<<(d==a)<<endl;
  174. cout<<(c==a)<<endl;
  175. cout<<"----------------------------\n\n\n";
  176. a.af();
  177. d = a;
  178. cout<<"a inainte de decr postf";
  179. a.af();
  180. a--;//d e copia lui a
  181. a.af();friend complex operator*(double, complex);
  182. cout<<"----------\n";
  183. a=d;friend complex operator*(double, complex);
  184. cout<<"a inainte de decr pref";
  185. a.af();
  186. --a;
  187. a.af();
  188.  
  189. a=d;
  190. complex aa=--a;
  191. cout<<"\naa=";aa.af();cout<<"\na="; a.af();
  192.  
  193. a=d;
  194. aa=a--;
  195. cout<<"\naa=";aa.af();cout<<"\na="; a.af();
  196.  
  197. cout<<"\n\n\na="<<a<<endl;
  198. cout<<"Introdu val ptr a";
  199. cin>>a;
  200. cout<<a;
  201.  
  202. */
  203.  
  204. complex a(100,200);
  205. cout<<a;
  206.  
  207. complex c;
  208. c=100/a;
  209. cout<<c;
  210.  
  211. complex d(20,50), b(15,30),div;
  212.  
  213. div=d/b;
  214. cout<<div;
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement