Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.50 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class PLN
  5. {
  6. protected:
  7. private:
  8. public:
  9.     int bok1, bok2, srednica;
  10.     PLN(int my_bok1, int my_bok2): bok1(my_bok1), bok2(my_bok2) {}
  11.     PLN(float my_srednica) : srednica(my_srednica){}
  12.     virtual float oblicz_powierzchnie() = 0;
  13.    
  14.     bool za_duza_powierzchnia(float ograniczenie)
  15.     {
  16.         if ( oblicz_powierzchnie() > ograniczenie )
  17.         {
  18.             cout << "Za duze pole powierzchni!\n";
  19.             return true;
  20.         }
  21.         else
  22.         {
  23.             cout << "Akceptowalne pole powierzchni!\n";
  24.             return false;
  25.         }
  26.     }
  27. };
  28.  
  29. class Moneta : public PLN
  30. {
  31. protected:
  32. private:
  33. public:
  34.     Moneta(float my_srednica) : PLN(my_srednica) {}
  35.    
  36.     float oblicz_powierzchnie()
  37.     {
  38.         return 3.14 * (srednica/2) * (srednica/2);
  39.     }
  40.     int pokrycie_powierzchni (float ograniczenie)
  41.     {
  42.         float i = 1, suma = oblicz_powierzchnie();
  43.         if ( za_duza_powierzchnia(ograniczenie) == true )
  44.         {
  45.             cout << "Nie mozna wykonac zadanie, pole powierzchni przekracza ograniczenie.\n";
  46.         }
  47.         else
  48.         {
  49.             while ( suma <= ograniczenie)
  50.             {
  51.                 suma = suma + oblicz_powierzchnie();
  52.                 i = i + 1;
  53.                 if ( suma == ograniczenie)
  54.                 {
  55.                     cout << "By pokryc jeden metr kwadratowy potrzeba " << i << " monet o tym nominale.\n";
  56.                     return 1;
  57.                 }
  58.                 if ( suma > ograniczenie )
  59.                 {
  60.                     cout << "Nie mozna pokryc dokladnie jednego metra.\nIle wykorzystano monet: " << i << endl;
  61.                     printf("Suma wynosi: %.2fmm\n", suma);
  62.                     cout << "Jesli sie odejmie jedna monete to suma bedzie wynosic: ";
  63.                     printf("%.2fmm\n", suma - oblicz_powierzchnie());
  64.                     return -1;
  65.                 }
  66.             }
  67.         }
  68.         return 0;
  69.     }
  70.     friend ostream & operator << (ostream & dane, Moneta &m)
  71.     {
  72.         return ( dane << "Moneta" << endl
  73.                 << "Srednica: " << m.srednica << "mm" << endl);
  74.     }
  75. };
  76.  
  77. class Banknot : public PLN
  78. {
  79. protected:
  80. private:
  81. public:
  82.     Banknot(int my_bok1, int my_bok2) : PLN(my_bok1, my_bok2) {}
  83.     float oblicz_powierzchnie()
  84.     {
  85.         return (bok1 * bok2);
  86.     }
  87.     int pokrycie_powierzchni (float ograniczenie)
  88.     {
  89.         double i = 1, suma = oblicz_powierzchnie();
  90.         if ( za_duza_powierzchnia(ograniczenie) == true )
  91.         {
  92.             cout << "Nie mozna wykonac zadanie, pole powierzchni przekracza ograniczenie.\n";
  93.         }
  94.         else
  95.         {
  96.             while ( suma <= ograniczenie)
  97.             {
  98.                 suma = suma + oblicz_powierzchnie();       
  99.                 i = i + 1;
  100.                 if ( suma == ograniczenie)
  101.                 {
  102.                     cout << "By pokryc jeden metr kwadratowy potrzeba " << i << " banknotow o tym nominale.\n";
  103.                     return 1;
  104.                 }
  105.                 if ( suma > ograniczenie )
  106.                 {
  107.                     cout << "Nie mozna pokryc dokladnie jednego metra.\nIle wykorzystano banknotow: " << i << endl;
  108.                     printf("Suma wynosi: %.2fmm\n", suma);
  109.                     cout << "Jesli sie odejmie jeden banknot to suma bedzie wynosic: ";
  110.                     printf("%.2fmm\n", suma - oblicz_powierzchnie());
  111.                     return -1;
  112.                 }
  113.             }
  114.         }
  115.         return 0;
  116.     }
  117.     friend ostream & operator << (ostream & dane, Banknot &b)
  118.     {
  119.             return (dane << "Banknot" << endl
  120.                     << "Bok 1: " << b.bok1 << "mm" << endl
  121.                     << "Bok 2: " << b.bok2 << "mm" << endl);
  122.     }
  123. };
  124.  
  125. int main()
  126. {
  127.     float ograniczenie = 1000000;
  128.    
  129.     Banknot zl10(120, 60);
  130.     Banknot zl20(126, 63);
  131.     Banknot zl50(132, 66);
  132.     Banknot zl100(138, 69);
  133.     Banknot zl200(144, 72);
  134.    
  135.     Moneta gr500(24);
  136.     Moneta gr200(21.5);
  137.     Moneta gr100(23);
  138.     Moneta gr50(20.5);
  139.     Moneta gr20(18.5);
  140.     Moneta gr10(16.5);
  141.    
  142.     cout << zl10.oblicz_powierzchnie() << endl;
  143.     cout << zl10.pokrycie_powierzchni(ograniczenie);
  144.    
  145.     cout << gr500.oblicz_powierzchnie() << endl;
  146.     cout << gr500.pokrycie_powierzchni(ograniczenie);
  147.     return 0;
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement