DiQ

kalkulator zespolonych

DiQ
Jun 15th, 2014
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.63 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include <cstdlib>
  4. #include <math.h>
  5. #include <conio.h>
  6. using namespace std;
  7.  
  8. class Zespolona{
  9. private:
  10. int i, v;
  11. public:
  12.  
  13. Zespolona()
  14. {
  15. i=rand()%21-10;
  16. v=rand()%21-10;
  17. }
  18. Zespolona(const Zespolona &zes)
  19. {
  20. i=zes.i;
  21. v=zes.v;
  22. }
  23. double modul()
  24. {
  25. double mod;
  26. return mod=pow(i*i+v*v, 1./2);
  27. }
  28. ~Zespolona() { cout << "destruktor" << endl;}
  29. friend void operator+( Zespolona &, const Zespolona &);
  30. friend void operator-(Zespolona &, const Zespolona &);
  31. friend void operator*(Zespolona &, const Zespolona &);
  32. friend void operator*=(Zespolona &, const Zespolona &);
  33. friend void operator+=(Zespolona &, const Zespolona &);
  34. friend void operator-=(Zespolona &, const Zespolona &);
  35. friend bool operator<(Zespolona &, Zespolona &);
  36. friend bool operator>(Zespolona &, Zespolona &);
  37. friend bool operator==(Zespolona &, Zespolona &);
  38. friend ostream & operator<< (ostream &wyjscie, Zespolona &a);
  39. };
  40. ostream & operator <<(ostream &wyjscie, Zespolona &a) {
  41. if(a.i >= 0) {
  42. return wyjscie << a.v << "+" << a.i << "i, "; }
  43. else {
  44. return wyjscie << a.v << "-" << abs(a.i)<< "i, "; }};
  45. void operator+(Zespolona &x, const Zespolona &y)
  46. {
  47. Zespolona suma;
  48. suma.v = x.v +y.v;
  49. suma.i = x.i + y.i;
  50. if(suma.i>=0)
  51. cout << "suma to: " << suma.v << "+" << suma.i <<"i" << endl;
  52. else
  53. cout << "suma to: " << suma.v << suma.i <<"i" << endl;
  54.  
  55. }
  56. void operator-(Zespolona &x, const Zespolona &y)
  57. {
  58. Zespolona roznica;
  59. roznica.v = x.v -y.v;
  60. roznica.i = x.i - y.i;
  61. if(roznica.i>=0)
  62. cout << "roznica to: " << roznica.v << "+" << roznica.i <<"i" << endl;
  63. else
  64. cout << "roznica to: " << roznica.v << roznica.i <<"i" << endl;
  65. }
  66. void operator*(Zespolona &x, const Zespolona &y)
  67. {
  68. Zespolona iloczyn;
  69. iloczyn.v = x.v*y.v -x.i*y.i;
  70. iloczyn.i = x.i*y.v + x.v*y.i;
  71. if(iloczyn.i>=0)
  72. cout << "iloczyn to: " << iloczyn.v << "+" << iloczyn.i << "i" << endl;
  73. else
  74. cout << "iloczyn to: " << iloczyn.v << iloczyn.i << "i" << endl;
  75. }
  76. void operator*=(Zespolona &x, const Zespolona &y)
  77. {
  78. x.v=x.v*y.v-x.i*y.i;
  79. x.i=x.i*y.v+x.v*y.i;
  80. if(x.i>=0)
  81. cout << "po wykonaniu komorka ma wartosc: " << x.v << "+" << x.i << "i" << endl;
  82. else
  83. cout << "po wykonaniu komorka ma wartosc: " << x.v << x.i << "i" << endl;
  84. }
  85. void operator+=(Zespolona &x, const Zespolona &y)
  86. {
  87. x.v=x.v+y.v;
  88. x.i=x.i+y.i;
  89. if(x.i>=0)
  90. cout << "po wykonaniu komorka ma wartosc: " << x.v << "+" << x.i << "i" << endl;
  91. else
  92. cout << "po wykonaniu komorka ma wartosc: " << x.v << x.i << "i" << endl;
  93. }
  94. void operator-=(Zespolona &x, const Zespolona &y)
  95. {
  96. x.v=x.v-y.v;
  97. x.i=x.i-y.i;
  98. if(x.i>=0)
  99. cout << "po wykonaniu komorka ma wartosc: " << x.v << "+" << x.i << "i" << endl;
  100. else
  101. cout << "po wykonaniu komorka ma wartosc: " << x.v << x.i << "i" << endl;
  102. }
  103. bool operator<(Zespolona &x, Zespolona &y)
  104. {
  105. if(x.modul()<y.modul())
  106. return true;
  107. else
  108. return false;
  109. }
  110. bool operator>(Zespolona &x, Zespolona &y)
  111. {
  112. if(x.modul()>y.modul())
  113. return true;
  114. else
  115. return false;
  116. }
  117. bool operator==(Zespolona &x, Zespolona &y)
  118. {
  119. if(x.modul()==y.modul())
  120. return true;
  121. else return false;
  122. }
  123.  
  124.  
  125.  
  126.  
  127. int main()
  128. {
  129. srand(time(NULL));
  130. int wybor, x, y;
  131. cout << "liczby zespolone to: " << endl;
  132. Zespolona tab[10];
  133. for(int i=0; i<10; i++)
  134. cout << tab[i] << " ";
  135. cout << endl << "ich moduly to: " << endl;
  136. for(int i=0; i<10; i++)
  137. cout << tab[i].modul() << " ";
  138.  
  139. cout << endl;
  140.  
  141.  
  142. do{
  143. cout << "\nWybierz dzialanie: " << endl << "1. dodawanie \n2. odejmowanie \n3. mnozenie " << endl;
  144. cout << "4. przypisanie do elementu iloczynu jego i innej komorki " << endl;
  145. cout << "5. przypisanie do elementu sumy jego i innej komorki " << endl;
  146. cout << "6. przypisanie do elementu roznicy jego i innej komorki " << endl;
  147. cout << "7. Porownywanie modulow" << endl;
  148. cout << "Twoj wybor: "; cin >> wybor;
  149. switch(wybor)
  150. {
  151. default:
  152. cout << "nie ma takigo dzialania!"; break;
  153. case 1:
  154. cout << "podaj ktore elementy tablicy do siebie dodac: \npierwszy: "; cin >> x;
  155. cout << "drugi: "; cin >> y;
  156. x-=1; y-=1;
  157. *(tab+x)+*(tab+y); break;
  158. case 2:
  159. cout << "podaj ktory element odjac od ktorego: \npierwszy: "; cin >> x;
  160. cout << "drugi: "; cin >> y;
  161. x-=1; y-=1;
  162. *(tab+x)- *(tab+y); break;
  163. case 3:
  164. cout << "podaj elementy ktore pomnozyc: \npierwszy: "; cin >> x;
  165. cout << "drugi: "; cin >> y;
  166. x-=1; y-=1;
  167. *(tab+x)* *(tab+y); break;
  168. case 4:
  169. cout << "ktorej komorce przypisac nowa wartosc? "; cin >> x;
  170. cout << "ktora komorke wymnozyc przez wczesniej wybrana? "; cin >> y;
  171. x-=1; y-=1;
  172. *(tab+x)*=*(tab+y); break;
  173. case 5:
  174. cout << "ktorej komorce przypisac nowa wartosc? "; cin >> x;
  175. cout << "ktora komorke dodac do wczesniej wybranej? "; cin >> y;
  176. x-=1; y-=1;
  177. *(tab+x)+=*(tab+y); break;
  178. case 6:
  179. cout << "ktorej komorce przypisac nowa wartosc? "; cin >> x;
  180. cout << "ktora komorke odjac od wczesniej wybranej? "; cin >> y;
  181. x-=1; y-=1;
  182. *(tab+x)-=*(tab+y); break;
  183. case 7:
  184. cout << "moduly ktorych komorek sprawdzic? \npierwsza: "; cin >> x;
  185. cout << "druga: "; cin >> y;
  186. x-=1; y-=1;
  187. if(*(tab+x)<*(tab+y))
  188. cout << "liczba " << *(tab+x) << " jest mniejsza" << endl;
  189. else if(*(tab+x)>*(tab+y))
  190. cout << "liczba " << *(tab+x) << " jest wieksza" << endl;
  191. else if(*(tab+x)==*(tab+y))
  192. cout << "te liczby sa rowne" << endl; break;
  193. }
  194. cout << "Wcisnij dowolny przycisk aby powrocic do kalkulatora \nwcisnij esc aby wylaczyc kalkulator" << endl;
  195. }while(_getch()!=27);
  196. system("pause");
  197. return 0;
  198. }
Advertisement
Add Comment
Please, Sign In to add comment