Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Figura
- {
- public:
- Figura() {}
- virtual double pole() { return 0; }
- virtual const char * nazwa() { return "Figura"; }
- };
- class Prostokat : public Figura{
- public :
- Prostokat (double b1 =0, double b2 =0 ) : bok1(b1) , bok2(b2)
- {}
- double pole(){return bok1*bok2;}
- const char * nazwa () {return "Prostakat";}
- double bok1;
- double bok2;
- };
- class Trojkat : public Figura{
- public :
- Trojkat (double podst =0, double wys =0 ) : podst(podst) , wys(wys)
- {}
- double pole(){return podst*wys/2;}
- const char * nazwa () {return "Trojkat";}
- double podst;
- double wys;
- };
- class Kwadrat : public Figura
- {
- public:
- Kwadrat( double b = 0 ) : bok( b ) {}
- double pole() { return bok * bok; }
- const char * nazwa() { return "Kwadrat"; }
- double bok;
- };
- class Kolo : public Figura
- {
- public:
- Kolo( double promien = 0 ) : promien( promien ) {}
- double pole() { return 3.14 * promien * promien; }
- const char * nazwa() { return "Kolo"; }
- double promien;
- };
- class FabrykaFigur
- {
- public:
- Figura * zrobFigure( int jakFigura )
- {
- switch( jakFigura )
- {
- case 1 : return new Kwadrat;
- case 2 : return new Kolo;
- case 3 : return new Prostokat;
- case 4 : return new Trojkat;
- default : return 0;
- }
- }
- };
- class Program
- {
- public:
- Program( const char * nazwa = 0 )
- {
- cout << "\nWitaj w programie " << ( ( nazwa != 0 ) ? nazwa : "" ) << endl;
- }
- ~Program()
- {
- cout << "\n\nPa, Pa!\nNacisnij Enter by zakonczyc...";
- cin.ignore();
- cin.get();
- }
- int wyborFigury()
- {
- int wybor;
- cout << "\n1. Kwadrat\n2. Kolo\n3.Prostokat\n4.Trojkat\n0. Koniec\n?> ";
- cin >> wybor;
- return wybor;
- }
- void ustalParametry( Figura * f )
- {
- if( stricmp( f->nazwa(), "Kwadrat" ) == 0 )
- { double wymiar;
- cout<<"podaj dlugosc boku ";
- cin>>wymiar;
- // zapytac uzytkownika o bok
- ( ( Kwadrat * ) f )->bok = wymiar; // Tu wartosc odczytana z klawiatury
- }
- if( stricmp( f->nazwa(), "Kolo" ) == 0 )
- { double pr;
- cout<<"podaj dlugosc promienia ";
- cin>>pr;
- // zapytac uzytkownika o bok
- ( ( Kolo * ) f )->promien = pr; // Tu wartosc odczytana z klawiatury
- }
- if( stricmp( f->nazwa(), "Trojkat" ) == 0 )
- { double po;
- double wyso;
- cout<<"podaj dlugosc podstawy \n";
- cin>>po;
- cout<<"podaj wysokosc\n";
- cin>>wyso;
- // zapytac uzytkownika o bok
- ( ( Trojkat * ) f )->podst = po; // Tu wartosc odczytana z klawiatury
- ( ( Trojkat * ) f )->wys = wyso;
- }
- if( stricmp( f->nazwa(), "Prostakat" ) == 0 )
- { double bo1;
- double bo2;
- cout<<"podaj dlugosc pierwszego boku \n";
- cin>>bo1;
- cout<<"podaj dlugosc drugiego boku\n";
- cin>>bo2;
- // zapytac uzytkownika o bok
- ( (Prostokat * ) f )->bok1 = bo1; // Tu wartosc odczytana z klawiatury
- ( ( Prostokat* ) f )->bok2 = bo2;
- }
- // Ustalanie parametrow dla innych figur
- }
- void wykonajSie()
- {
- Figura * f = 0;
- int wybor;
- FabrykaFigur fabryka;
- do
- {
- wybor = wyborFigury();
- f = fabryka.zrobFigure( wybor );
- if( f != 0 )
- {
- ustalParametry( f );
- liczIPisz( f );
- delete f;
- }
- }
- while( wybor != 0 );
- }
- void liczIPisz( Figura * figura )
- {
- cout << "\nFigura: " << figura->nazwa();
- cout << "\nPole: " << figura->pole();
- }
- };
- int main()
- {
- Program * mojProgramWspanialy = new Program( "Jedyny Taki :)" );
- mojProgramWspanialy->wykonajSie();
- delete mojProgramWspanialy;
- return EXIT_SUCCESS;
- }
Add Comment
Please, Sign In to add comment