Advertisement
Guest User

Untitled

a guest
Feb 24th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.05 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. #include <cstdio>
  4. #include <cmath>
  5. #include <cstdlib>
  6. using namespace std;
  7.  
  8.  
  9.  
  10.  
  11. using namespace std;
  12.  
  13. typedef struct
  14. {
  15. double re, im;
  16. } l_complex;
  17. // Base class
  18. class Kalkulator
  19. {
  20.  
  21. public:
  22.  
  23. virtual void dodawanie()=0;
  24. virtual void odejmowanie()=0;
  25. virtual void mnozenie()=0;
  26. virtual void dzielenie()=0;
  27. };
  28.  
  29. class complex : public Kalkulator
  30. {
  31. private:
  32. l_complex wynik;
  33. l_complex x;
  34. l_complex y;
  35. public:
  36. void wypisz2(l_complex p)
  37. {
  38. cout<<p.im<<"+"<<p.re<<"i"<<endl;
  39. }
  40. void set_x(double p,double r)
  41. {
  42. x.im=p;
  43. x.re=r;
  44. }
  45. void set_y(double p,double r)
  46. {
  47. y.im=p;
  48. y.re=r;
  49. }
  50. void dodawanie()
  51. {
  52. wynik.re = x.re + y.re;
  53. wynik.im = x.im + y.im;
  54. wypisz2(wynik);
  55. }
  56.  
  57. void odejmowanie()
  58. {
  59. wynik.re = x.re - y.re;
  60. wynik.im = x.im - y.im;
  61. wypisz2(wynik);
  62. }
  63. void mnozenie()
  64. {
  65. wynik.re = x.re*y.re - x.im*y.im;
  66. wynik.im = x.re*y.im + x.im*y.re;
  67. wypisz2(wynik);
  68. }
  69. void dzielenie()
  70. {
  71. double modol_kwadrat;
  72. modol_kwadrat = y.re*y.re + y.im*y.im;
  73. wynik.re = (x.re*y.re + x.im*y.im) / modol_kwadrat;
  74. wynik.im = (y.re*x.im - x.re*y.im) / modol_kwadrat;
  75. wypisz2(wynik);
  76. }
  77. };
  78.  
  79. class matrix : public Kalkulator
  80. {
  81. /* Dodanie macierzy A + B = C */
  82. private:
  83. int ILWIERSZY;
  84. int ILKOLUMN;
  85. int ILWIERSZY2;
  86. int ILKOLUMN2;
  87. double **A;
  88. double **B;
  89. double **C;
  90. public:
  91. void wypisz(double **Z)
  92. {
  93. int i,j;
  94. for(i=0; i<ILWIERSZY; i++)
  95. {
  96. for(j=0; j<ILKOLUMN2; j++)
  97. {
  98. cout<<Z[i][j]<<" ";
  99. }
  100. cout<<endl;
  101. }
  102. }
  103. void get_C()
  104. {
  105. C= new double *[ILWIERSZY];
  106. int i;
  107. for(i=0; i<ILWIERSZY; i++)
  108. C[i] = new double[ILKOLUMN];
  109. }
  110. void get_ILWIERSZY(int x)
  111. {
  112. ILWIERSZY=x;
  113. }
  114. void get_ILKOLUMN(int x)
  115. {
  116. ILKOLUMN=x;
  117. }
  118. void get_ILWIERSZY2(int x)
  119. {
  120. ILWIERSZY2=x;
  121. }
  122. void get_ILKOLUMN2(int x)
  123. {
  124. ILKOLUMN2=x;
  125. }
  126. void get_A()
  127. {
  128. cout<<"Podaj macierz A:"<<endl;
  129. int i,j;
  130. A= new double *[ILWIERSZY];
  131. for (i = 0; i < ILWIERSZY; i++)
  132. {
  133. A[i] = new double[ILKOLUMN];
  134.  
  135. for (j = 0; j < ILKOLUMN; j++)
  136. {
  137. cin >> A[i][j];
  138. }
  139.  
  140. cout << endl;
  141. }
  142.  
  143. }
  144. void get_B()
  145. {
  146. cout<<"Podaj macierz B:"<<endl;
  147. int i,j;
  148. B= new double *[ILWIERSZY2];
  149. for (i = 0; i < ILWIERSZY2; i++)
  150. {
  151. B[i] = new double[ILKOLUMN2];
  152.  
  153. for (j = 0; j < ILKOLUMN2; j++)
  154. {
  155. cin >> B[i][j];
  156. }
  157.  
  158. cout << endl;
  159. }
  160.  
  161. }
  162. void dodawanie()
  163. {
  164. int i, j;
  165. for (i = 0; i < ILWIERSZY; i++)
  166. for (j = 0; j < ILKOLUMN; j++)
  167. C[i][j] = A[i][j] + B[i][j];
  168. wypisz(C);
  169. }
  170.  
  171. /* Róznica macierzy A - B = C */
  172. void odejmowanie()
  173. {
  174. int i, j;
  175. for (i = 0; i < ILWIERSZY; i++)
  176. for (j = 0; j < ILKOLUMN; j++)
  177. C[i][j] = A[i][j] - B[i][j];
  178. wypisz(C);
  179. }
  180.  
  181. /* Mnozenie macierzy A + B = C */
  182. void mnozenie()
  183. {
  184. int i, j, k;
  185. for (i = 0; i < ILWIERSZY; i++)
  186. for (j = 0; j < ILKOLUMN; j++)
  187. C[i][j] = 0;
  188. for (i = 0; i < ILWIERSZY; i++)
  189. for (j = 0; j < ILWIERSZY2; j++)
  190. for (k = 0; k < ILKOLUMN; k++)
  191. C[i][j] = C[i][j] + A[i][k] * B[k][j];
  192.  
  193. wypisz(C);
  194. }
  195. void dzielenie()
  196. {
  197. cout << "Operacja nie wykonalna" << endl;
  198. }
  199. };
  200.  
  201.  
  202. int main()
  203. {
  204. int tryb, dzialanie;
  205. cout << "Wybierz tryb kalkulatora:\n" << "1. Zespolone\n"<<"2. Macierze" << endl;
  206. cin >> tryb;
  207. switch(tryb)
  208. {
  209. case 1:
  210. cout << "Wybrales dzialania na liczbach zespolonych:\nPodaj liczby:" << endl;
  211. break;
  212. case 2:
  213. cout << "Wybrales dzialania na macierzach:\n" << endl;
  214. break;
  215. default:
  216. cout << "Nie wybrales poprawnej opcji. Koncze program!" <<endl;
  217. break;
  218. }
  219. cout << "Chcesz:\n1.Dodac\n2.Odjac\n3.Mnozyc\n4.Dzielic" << endl;
  220. cin >> dzialanie;
  221. if(tryb==1 && dzialanie==1)
  222. {
  223. l_complex temp1, temp2;
  224. complex comp;
  225. cout << "Czesc Re pierwszej liczby: " ;
  226. cin >> temp1.re;
  227. cout << "Czesc Im pierwszej liczby: " ;
  228. cin >> temp1.im;
  229. cout << "Czesc Re drugiej liczby: " ;
  230. cin >> temp2.re;
  231. cout << "Czesc Im drugiej liczby: " ;
  232. cin >> temp2.im;
  233. comp.set_x(temp1.im,temp1.re);
  234. comp.set_y(temp2.im,temp2.re);
  235. comp.dodawanie();
  236. }
  237.  
  238.  
  239. return 0;
  240. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement