Guest User

Untitled

a guest
Dec 5th, 2019
72
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. class element {
  7. protected:
  8. double prad;
  9. double napiecie;
  10. double moc;
  11. double czestotliwosc;
  12. string nazwa;
  13. public:
  14. element() {nazwa = "element"; czestotliwosc = 1.0; napiecie = prad = moc = 0.0;}
  15. element(const string arg) {nazwa = arg; napiecie = czestotliwosc = 1.0; prad = moc = 0.0;}
  16.  
  17. virtual void wymuszenieU(double) = 0;
  18. virtual void wymuszenieI(double) = 0;
  19. virtual void wymuszenieU_f(double, double) = 0;
  20.  
  21. friend int obwod(element*, element*);
  22.  
  23. void setName(string naz) {
  24. nazwa = naz;
  25. }
  26.  
  27. string getName() {
  28. return nazwa;
  29. }
  30. };
  31.  
  32. int obwod(element *e1, element *e2) {
  33. bool pradMatch = false;
  34. bool napiecieMatch = false;
  35. if (e1->prad == e2->prad) {
  36. pradMatch = true;
  37. }
  38. if (e1->napiecie == e2->napiecie) {
  39. napiecieMatch = true;
  40. }
  41. if ((pradMatch && !napiecieMatch) || (!pradMatch && napiecieMatch)) {
  42. //std::string matchType = (pradMatch)?"prad":"napiecie";
  43. std::string matchType;
  44. if (pradMatch) {
  45. matchType = "prad";
  46. return 1;
  47. } else {
  48. matchType = "napiecie";
  49. return 2;
  50. }
  51.  
  52. cout << "elementy: " << e1->nazwa.c_str() << " oraz: " << e2->nazwa.c_str() << " maja taki sam: " << matchType.c_str() << endl;
  53. } else {
  54. if (pradMatch && napiecieMatch) {
  55. cout << "elementy: " << e1->nazwa.c_str() << " oraz: " << e2->nazwa.c_str() << " sa nieokreslone." << endl;
  56. return 3;
  57. } else {
  58. cout << "elementy: " << e1->nazwa.c_str() << " oraz: " << e2->nazwa.c_str() << " sa nie polaczone." << endl;
  59. return 0;
  60. }
  61. }
  62. }
  63.  
  64. class cewka : public element {
  65. protected:
  66. double L;
  67. public:
  68. cewka() {nazwa = "cewka"; L = 1.0;}
  69. cewka(const string arg) {nazwa = arg; L = 1.0;}
  70. cewka(const string arg, double argL) {nazwa = arg; L = argL;}
  71. void wymuszenieU(double);
  72. void wymuszenieI(double);
  73. void wymuszenieU_f(double, double);
  74.  
  75. };
  76.  
  77. void cewka::wymuszenieU(double u) {
  78. napiecie = u;
  79. if (czestotliwosc > 0.0) {
  80. prad = napiecie*6.28*czestotliwosc*L;
  81. napiecie = prad * 6.28 * L * czestotliwosc;
  82. moc = napiecie * prad;
  83. }
  84. }
  85.  
  86. void cewka::wymuszenieI(double i) {
  87. prad = i;
  88. if (czestotliwosc > 0.0) {
  89. napiecie = prad * 6.28 * L * czestotliwosc;
  90. moc = napiecie * prad;
  91. prad = napiecie*6.28*czestotliwosc*L;
  92. }
  93. }
  94.  
  95.  
  96. void cewka::wymuszenieU_f(double U, double f) {
  97. czestotliwosc = f;
  98. napiecie = U;
  99.  
  100. if(czestotliwosc>0.0) {
  101. napiecie = prad * 6.28 * L * czestotliwosc;
  102. moc = napiecie * prad;
  103. prad = napiecie*6.28*czestotliwosc*L;
  104. }
  105. }
  106.  
  107. class rezystor: public element {
  108. protected:
  109. double R;
  110. public:
  111. rezystor() {nazwa = "rezystor"; R = 1.0;}
  112. rezystor(const string arg) {nazwa = arg; R=1.0;}
  113. rezystor(const string arg, double argR) {nazwa= arg; R = argR;}
  114. void wymuszenieU(double);
  115. void wymuszenieI(double);
  116. void wymuszenieU_f(double,double);
  117.  
  118. };
  119.  
  120. void rezystor::wymuszenieU(double u) {
  121. napiecie = u;
  122. if (R > 0.0) {
  123. prad = napiecie/R;
  124. moc = prad*prad*R;
  125. napiecie = prad*R;
  126. }
  127. }
  128.  
  129. void rezystor::wymuszenieI(double i) {
  130. prad = i;
  131. if (R > 0.0) {
  132. prad = napiecie/R;
  133. moc = prad*prad*R;
  134. napiecie = prad*R;
  135. }
  136. }
  137.  
  138. void rezystor::wymuszenieU_f(double U, double f) {
  139. czestotliwosc = f;
  140. napiecie = U;
  141.  
  142. if(R>0.0) {
  143. prad = napiecie/R;
  144. moc = prad*prad*R;
  145. napiecie = prad*R;
  146. }
  147. }
  148.  
  149. class kondensator: public element {
  150. protected:
  151. double C;
  152. public:
  153. kondensator() {nazwa = "kondensator"; C = 1.0;}
  154. kondensator(const string arg) {nazwa = arg; C=1.0;}
  155. kondensator(const string arg, double argC) {nazwa= arg; C = argC;}
  156. void wymuszenieU(double);
  157. void wymuszenieI(double);
  158. void wymuszenieU_f(double, double);
  159.  
  160. };
  161.  
  162. void kondensator::wymuszenieU(double u) {
  163. napiecie = u;
  164. if (czestotliwosc > 0.0) {
  165. napiecie = prad/(6.28*czestotliwosc*C);
  166. moc = (prad*prad)/(6.28*czestotliwosc*C);
  167. prad = napiecie/(6.28*czestotliwosc*C);
  168. }
  169. }
  170.  
  171. void kondensator::wymuszenieI(double i) {
  172. prad = i;
  173. if (czestotliwosc > 0.0) {
  174. napiecie = prad/(6.28*czestotliwosc*C);
  175. moc = (prad*prad)/(6.28*czestotliwosc*C);
  176. prad = napiecie/(6.28*czestotliwosc*C);
  177. }
  178. }
  179.  
  180.  
  181. void kondensator::wymuszenieU_f(double U, double f) {
  182. czestotliwosc = f;
  183. napiecie = U;
  184. if (czestotliwosc > 0.0) {
  185. napiecie = prad/(6.28*czestotliwosc*C);
  186. moc = (prad*prad)/(6.28*czestotliwosc*C);
  187. prad = napiecie/(6.28*czestotliwosc*C);
  188.  
  189. }
  190. }
  191.  
  192.  
  193. int main() {
  194.  
  195. element *tab[10];
  196. tab[0] = new cewka("cewka1", 4.0);
  197. tab[1] = new kondensator("kondensator1", 3.0);
  198. tab[2] = new rezystor("rezystor1", 20.0);
  199. tab[3] = new cewka("cewka2", 3.0);
  200. tab[4] = new kondensator("kondensator2", 200.0);
  201. tab[5] = new kondensator("kondensator3", 3.0);
  202. tab[6] = new cewka("cewka3", 200);
  203. tab[7] = new rezystor("rezystor2", 3.0);
  204. tab[8] = new kondensator("kondensator4", 100);
  205. tab[9] = new rezystor("rezystor3", 120);
  206.  
  207. for (int i = 0; i < 10; i++) {
  208. int wybor;
  209. double U;
  210. double I;
  211. double f;
  212.  
  213. cout << "Wybierz wymuszenie dla elementu: " << tab[i]->getName() << endl;
  214. cin >> wybor;
  215. if (wybor == 0) {
  216. cout << "Podaj napięcie";
  217. cin >> U;
  218. tab[i]->wymuszenieU(U);
  219. }
  220.  
  221. if (wybor == 1) {
  222. cout << "Podaj natezenie" << endl;
  223. cin >> I;
  224. tab[i]->wymuszenieI(I);
  225. }
  226.  
  227. if (wybor == 2) {
  228. cout << "Podaj natezenie" << endl;
  229.  
  230. cin >> I;
  231. cout << "Podaj czestotliwosc" << endl;
  232. cin >> f;
  233. tab[i]->wymuszenieU_f(I, f);
  234. }
  235. }
  236.  
  237. int counter = 0;
  238. for (int i = 0; i < 10; i++) {
  239. for (int a = i + 1; a < 10; a++) {
  240. obwod(tab[i], tab[a]);
  241. counter += 1;
  242. }
  243. }
  244.  
  245.  
  246. cout << counter;
RAW Paste Data