Advertisement
Guest User

lab_2_pg

a guest
Oct 23rd, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <cmath>
  5. #include <cstdio>
  6.  
  7. class figura {
  8. protected:
  9.     double pole, obwod;
  10. public:
  11.     void show_pole();
  12.     void show_obwod();
  13.     double return_obwod();
  14.     double return_pole();
  15.     virtual void wyswietl(){
  16.         std::cout << "0\n";
  17.     }
  18.     virtual void oblicz_pole() {
  19.         pole = 0;
  20.     }
  21.     virtual void oblicz_obwod() {
  22.         obwod = 0;
  23.     }
  24. };
  25. void figura::show_pole() {
  26.     std::cout << "Pole figury wynosi : " << pole << std::endl;
  27. }
  28. void figura::show_obwod() {
  29.     std::cout << "Obwod fiury wynosi : " << obwod << std::endl;
  30. }
  31. double figura::return_pole() {
  32.     return pole;
  33. }
  34. double figura::return_obwod() {
  35.     return obwod;
  36. }
  37.  
  38. class kwadrat:public figura {
  39. protected:
  40.     double bok;
  41. public:
  42.     kwadrat();
  43.     kwadrat(double a);
  44.     kwadrat(kwadrat &k);
  45.     void oblicz_pole();
  46.     void oblicz_obwod();
  47.     double return_bok();
  48.     void wyswietl();
  49. };
  50. void kwadrat::oblicz_pole() {
  51.     pole = bok * bok;
  52. }
  53. void kwadrat::oblicz_obwod() {
  54.     obwod = 4 * bok;
  55. }
  56. double kwadrat::return_bok() {
  57.     return bok;
  58. }
  59. void kwadrat::wyswietl() {
  60.     std::cout << "figura jest kwadratem o polu : " << pole << " i obwodzie : " << obwod << std::endl;
  61. }
  62. kwadrat::kwadrat() {
  63.     bok = (rand() % 10) + 1;
  64.     oblicz_pole();
  65.     oblicz_obwod();
  66. }
  67. kwadrat::kwadrat(double a) {
  68.     bok = a;
  69.     oblicz_pole();
  70.     oblicz_obwod();
  71. }
  72. kwadrat::kwadrat(kwadrat &k) {
  73.     bok = k.bok;
  74.     oblicz_pole();
  75.     oblicz_obwod();
  76. }
  77.  
  78. class prostokat:public kwadrat {
  79. private:
  80.     double wysokosc, szerokosc;
  81. public:
  82.     prostokat();
  83.     prostokat(double a);
  84.     prostokat(double a, double b);
  85.     void oblicz_pole();
  86.     void oblicz_obwod();
  87.     void wyswietl();
  88. };
  89. void prostokat::oblicz_pole() {
  90.     pole = wysokosc * szerokosc;
  91. }
  92. void prostokat::oblicz_obwod() {
  93.     obwod = (2 * szerokosc) + (2 * wysokosc);
  94. }
  95. void prostokat::wyswietl() {
  96.     std::cout << "figura jest prostokatem o polu : " << pole << " i obwodzie : " << obwod << std::endl;
  97. }
  98. prostokat::prostokat() {
  99.     szerokosc = (rand() % 10) + 1;
  100.     wysokosc = (rand() % 10) + 1;
  101.     oblicz_pole();
  102.     oblicz_obwod();
  103. }
  104. prostokat::prostokat(double a) {
  105.     szerokosc = a;
  106.     wysokosc = a;
  107.     bok = a;
  108.     kwadrat::oblicz_pole();
  109.     kwadrat::oblicz_obwod();
  110. }
  111. prostokat::prostokat(double a, double b) {
  112.     szerokosc = a;
  113.     wysokosc = b;
  114.     oblicz_pole();
  115.     oblicz_obwod();
  116. }
  117.  
  118. class kolo :public figura {
  119. private:
  120.     double promien;
  121.     double pi = 3.14;
  122. public:
  123.     kolo();
  124.     kolo(double r);
  125.     void oblicz_pole();
  126.     void oblicz_obwod();
  127.     void wyswietl();
  128. };
  129. void kolo::oblicz_pole() {
  130.     pole = pi * (pow(promien, 2));
  131. }
  132. void kolo::oblicz_obwod() {
  133.     obwod = 2 * pi*promien;
  134. }
  135. void kolo::wyswietl() {
  136.     std::cout << "figura jest kolem o polu : " << pole << " i obwodzie : " << obwod << std::endl;
  137. }
  138. kolo::kolo() {
  139.     promien = (rand() % 10) + 1;
  140.     oblicz_pole();
  141.     oblicz_obwod();
  142. }
  143. kolo::kolo(double r) {
  144.     promien = r;
  145.     oblicz_pole();
  146.     oblicz_obwod();
  147. }
  148.  
  149. class trojkat:public figura {
  150. private:
  151.     double wysokosc, podstawa, przeciw_prostokatna;
  152. public:
  153.     trojkat();
  154.     trojkat(double a, double h);
  155.     void oblicz_pole();
  156.     void oblicz_obwod();
  157.     void wyswietl();
  158. };
  159. void trojkat::oblicz_pole() {
  160.     pole = (podstawa*wysokosc) / 2;
  161. }
  162. void trojkat::oblicz_obwod() {
  163.     obwod = podstawa + wysokosc + przeciw_prostokatna;
  164. }
  165. void trojkat::wyswietl() {
  166.     std::cout << "figura jest trojkatem o polu : " << pole << " i obwodzie : " << obwod << std::endl;
  167. }
  168. trojkat::trojkat() {
  169.     podstawa = (rand() % 10) + 1;
  170.     wysokosc = (rand() % 10) + 1;
  171.     przeciw_prostokatna = sqrt((pow(podstawa, 2)) + (pow(wysokosc, 2)));
  172.     oblicz_pole();
  173.     oblicz_obwod();
  174. }
  175. trojkat::trojkat(double a, double h) {
  176.     podstawa = a;
  177.     wysokosc = h;
  178.     przeciw_prostokatna = sqrt((pow(podstawa, 2)) + (pow(wysokosc, 2)));
  179.     oblicz_pole();
  180.     oblicz_obwod();
  181. }
  182.  
  183. int main()
  184. {
  185.     const int size = 8;
  186.     srand(time(NULL));
  187.     prostokat *w_pr_1 = new prostokat();
  188.     prostokat *w_pr_2 = new prostokat(6);
  189.     prostokat *w_pr_3 = new prostokat(4, 7);
  190.     w_pr_1->show_pole();
  191.     w_pr_2->show_pole();
  192.     w_pr_3->show_pole();
  193.     kwadrat *w_k_1 = new kwadrat(7);
  194.     kwadrat *w_k_2 = new kwadrat(*w_k_1);
  195.     trojkat *w_t_1 = new trojkat();
  196.     trojkat *w_t_2 = new trojkat(3, 4);
  197.     figura *w_o_1 = new kolo();
  198.     figura *tab[size];
  199.     figura tab2[size];
  200.     tab[0] = w_pr_1;
  201.     tab[1] = w_pr_2;
  202.     tab[2] = w_pr_3;
  203.     tab[3] = w_k_1;
  204.     tab[4] = w_k_2;
  205.     tab[5] = w_t_1;
  206.     tab[6] = w_t_2;
  207.     tab[7] = w_o_1;
  208.     tab2[0] = *w_pr_1;
  209.     tab2[1] = *w_pr_2;
  210.     tab2[2] = *w_pr_3;
  211.     tab2[3] = *w_k_1;
  212.     tab2[4] = *w_k_2;
  213.     tab2[5] = *w_t_1;
  214.     tab2[6] = *w_t_2;
  215.     tab2[7] = *w_o_1;
  216.     for (int i = 0; i < size; i++)
  217.     {
  218.         for (int j = 0; j < size - 1; j++)
  219.         {
  220.             if (tab[j]->return_pole() > tab[j + 1]->return_pole()) std::swap(tab[j], tab[j + 1]);
  221.         }
  222.     }
  223.     for (int i = 0; i < size; i++)
  224.     {
  225.         for (int j = 0; j < size - 1; j++)
  226.         {
  227.             if (tab2[j].return_pole() > tab2[j + 1].return_pole()) std::swap(tab2[j], tab2[j + 1]);
  228.         }
  229.     }
  230.     for (int i = 0; i < size; i++)
  231.         tab[i]->wyswietl();
  232.     for (int i = 0; i < size; i++)
  233.         tab2[i].wyswietl();
  234.     system("pause");
  235.     return 0;
  236. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement