Talar97

[JPO] Przykladowe zadania egzamin 3

Jun 12th, 2018
327
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <cstdlib>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class Figura
  6. {
  7.   public:
  8.     Figura(){}
  9.     virtual char * nazwa() = 0;
  10.     virtual double pole() = 0;
  11. };
  12.  
  13. class Kwadrat : public Figura
  14. {
  15.   public:
  16.     Kwadrat( int b ) : bok( b ) {}
  17.     char * nazwa() { return "Kwadrat"; }
  18.     double pole() { return bok * bok; }
  19.     double bok;
  20. };
  21.  
  22. class Kolo : public Figura
  23. {
  24.   public:
  25.     Kolo( int p ) : promien( p ) {}
  26.     char * nazwa() { return "Kolo"; }
  27.     double pole() { return 3.14 * promien * promien; }
  28.     double promien;
  29. };
  30.  
  31. class Barbapapa : public Figura
  32. {
  33.   public:
  34.     Barbapapa() {}
  35.     char * nazwa() { return "Barbapapa"; }
  36.     double pole() { return 1000; }
  37. };
  38.  
  39.  
  40. int oldMain()
  41. {
  42.   Figura * f;
  43.   int opcja;
  44.  
  45.   cout << "\n1. Kwadrat\n2. Kolo\n3. Barbapapa\n>> ";
  46.   cin >> opcja;
  47.   switch( opcja )
  48.   {
  49.     case 1: f = new Kwadrat( 10 );
  50.             break;
  51.     case 2: f = new Kolo( 5 );
  52.             break;
  53.     case 3: f = new Barbapapa();
  54.             break;
  55.   }
  56.  
  57.   cout << endl << "Figura: " << f->nazwa(); // (*f).nazwa()
  58.   cout << endl << "Pole:   " << f->pole();
  59.  
  60.   cin.ignore();
  61.   cin.get();
  62.   return EXIT_SUCCESS;
  63. }
  64.  
  65.  
  66. int main()
  67. {
  68.   const int MAKS = 10;
  69.   Figura * f[ MAKS ];
  70.  
  71.   int ileFigur = 0;
  72.   int opcja;
  73.  
  74.   do
  75.   {
  76.     if( ileFigur >= MAKS )
  77.       break;
  78.  
  79.     cout << "\n1. Kwadrat\n2. Kolo\n3. Barbapapa\n4. Koniec\n>> ";
  80.     cin >> opcja;
  81.     switch( opcja )
  82.     {
  83.       case 1: f[ ileFigur++ ] = new Kwadrat( 10 );
  84.               break;
  85.       case 2: f[ ileFigur++ ] = new Kolo( 5 );
  86.               break;
  87.       case 3: f[ ileFigur++ ] = new Barbapapa();
  88.               break;
  89.     }
  90.   }
  91.   while( opcja != 4 );
  92.  
  93.   cout << endl << "Liczba figur w kolekcji: " << ileFigur;
  94.  
  95.   for( int i = 0; i < ileFigur; ++i )
  96.     cout << endl << "Figura: " << f[ i ]->nazwa(); // (*f).nazwa()
  97.  
  98.   double suma = 0;
  99.   for( int i = 0; i < ileFigur; ++i )
  100.     suma += f[ i ]->pole();
  101.   cout << endl << "sumaryczne pole: " << suma;
  102.  
  103.   cin.ignore();
  104.   cin.get();
  105.   return EXIT_SUCCESS;
  106. }
Add Comment
Please, Sign In to add comment