Talar97

[JPO] Przykładowe zadanie egzamin 2

Jun 12th, 2018
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. class Figura
  7. {
  8.   public:
  9.     Figura() {}
  10.     virtual double pole() { return 0; }
  11.     virtual const char * nazwa() { return "Figura"; }
  12. };
  13. class Prostokat : public Figura{
  14. public :
  15.     Prostokat (double b1 =0, double b2 =0  ) : bok1(b1) , bok2(b2)
  16.     {}
  17.     double pole(){return bok1*bok2;}
  18.     const char * nazwa () {return "Prostakat";}
  19.     double bok1;
  20.     double bok2;
  21.     };
  22.     class Trojkat : public Figura{
  23. public :
  24.     Trojkat (double podst =0, double wys =0  ) : podst(podst) , wys(wys)
  25.     {}
  26.     double pole(){return podst*wys/2;}
  27.     const char * nazwa () {return "Trojkat";}
  28.     double podst;
  29.     double wys;
  30.     };
  31. class Kwadrat : public Figura
  32. {
  33.   public:
  34.     Kwadrat( double b = 0 ) : bok( b ) {}
  35.     double pole() { return bok * bok; }
  36.     const char * nazwa() { return "Kwadrat"; }
  37.     double bok;
  38. };
  39.  
  40. class Kolo : public Figura
  41. {
  42.   public:
  43.     Kolo( double promien = 0 ) : promien( promien ) {}
  44.     double pole() { return 3.14 * promien * promien; }
  45.     const char * nazwa() { return "Kolo"; }
  46.     double promien;
  47. };
  48.  
  49. class FabrykaFigur
  50. {
  51.   public:
  52.  
  53.   Figura * zrobFigure( int jakFigura )
  54.   {
  55.     switch( jakFigura )
  56.     {
  57.        case  1 : return new Kwadrat;
  58.        case  2 : return new Kolo;
  59.        case  3 : return new Prostokat;
  60.        case  4 : return new Trojkat;
  61.        default : return 0;
  62.     }
  63.   }
  64. };
  65.  
  66. class Program
  67. {
  68.   public:
  69.     Program( const char * nazwa = 0 )
  70.     {
  71.       cout << "\nWitaj w programie " << ( ( nazwa != 0 ) ? nazwa : "" ) << endl;
  72.     }
  73.  
  74.     ~Program()
  75.     {
  76.       cout << "\n\nPa, Pa!\nNacisnij Enter by zakonczyc...";
  77.       cin.ignore();
  78.       cin.get();
  79.     }
  80.  
  81.     int wyborFigury()
  82.     {
  83.         int wybor;
  84.         cout << "\n1. Kwadrat\n2. Kolo\n3.Prostokat\n4.Trojkat\n0. Koniec\n?> ";
  85.         cin >> wybor;
  86.         return wybor;
  87.     }
  88.  
  89.     void ustalParametry( Figura * f )
  90.     {
  91.       if( stricmp( f->nazwa(), "Kwadrat" ) == 0 )
  92.       { double wymiar;
  93.       cout<<"podaj dlugosc boku ";
  94.       cin>>wymiar;
  95.         // zapytac uzytkownika o bok
  96.         ( ( Kwadrat * ) f )->bok = wymiar; // Tu wartosc odczytana z klawiatury
  97.       }
  98.       if( stricmp( f->nazwa(), "Kolo" ) == 0 )
  99.       { double pr;
  100.       cout<<"podaj dlugosc promienia ";
  101.       cin>>pr;
  102.         // zapytac uzytkownika o bok
  103.         ( ( Kolo * ) f )->promien = pr; // Tu wartosc odczytana z klawiatury
  104.       }
  105.       if( stricmp( f->nazwa(), "Trojkat" ) == 0 )
  106.       { double po;
  107.       double wyso;
  108.       cout<<"podaj dlugosc podstawy \n";
  109.       cin>>po;
  110.       cout<<"podaj wysokosc\n";
  111.       cin>>wyso;
  112.         // zapytac uzytkownika o bok
  113.         ( ( Trojkat * ) f )->podst = po; // Tu wartosc odczytana z klawiatury
  114.         ( ( Trojkat * ) f )->wys = wyso;
  115.       }
  116.            if( stricmp( f->nazwa(), "Prostakat" ) == 0 )
  117.       { double bo1;
  118.       double bo2;
  119.       cout<<"podaj dlugosc pierwszego boku \n";
  120.       cin>>bo1;
  121.       cout<<"podaj dlugosc drugiego boku\n";
  122.       cin>>bo2;
  123.         // zapytac uzytkownika o bok
  124.         ( (Prostokat * ) f )->bok1 = bo1; // Tu wartosc odczytana z klawiatury
  125.         ( ( Prostokat* ) f )->bok2 = bo2;
  126.       }
  127.  
  128.       // Ustalanie parametrow dla innych figur
  129.     }
  130.  
  131.     void wykonajSie()
  132.     {
  133.       Figura * f = 0;
  134.       int wybor;
  135.       FabrykaFigur fabryka;
  136.  
  137.       do
  138.       {
  139.         wybor = wyborFigury();
  140.         f = fabryka.zrobFigure( wybor );
  141.         if( f != 0  )
  142.         {
  143.           ustalParametry( f );
  144.           liczIPisz( f );
  145.           delete f;
  146.         }
  147.       }
  148.       while( wybor != 0 );
  149.     }
  150.  
  151.     void liczIPisz( Figura * figura )
  152.     {
  153.       cout << "\nFigura: " << figura->nazwa();
  154.       cout << "\nPole: "  << figura->pole();
  155.     }
  156.  
  157. };
  158.  
  159. int main()
  160. {
  161.   Program * mojProgramWspanialy = new Program( "Jedyny Taki :)" );
  162.  
  163.   mojProgramWspanialy->wykonajSie();
  164.  
  165.   delete mojProgramWspanialy;
  166.  
  167.   return EXIT_SUCCESS;
  168. }
Add Comment
Please, Sign In to add comment