SHARE
TWEET

Untitled

a guest Dec 5th, 2019 67 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
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top