Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <cmath>
- #include <iostream>
- using namespace std;
- class Figura
- {
- public:
- virtual char * podajNazwe() = 0;
- virtual double obliczPole() = 0;
- };
- class Kwadrat : public Figura
- {
- public:
- char * podajNazwe() { return "Kwadrat"; }
- Kwadrat( double b ) : bok( 0 )
- {
- ustawBok( b );
- }
- Kwadrat() : bok( 0 ) {}
- void ustawBok( double bok )
- {
- if( bok >= 0 )
- Kwadrat::bok = bok;
- }
- double pobierzBok()
- {
- return bok;
- }
- double obliczPole()
- {
- return bok * bok;
- }
- private:
- double bok;
- };
- class Kolo : public Figura
- {
- public:
- char * podajNazwe() { return "Kolo"; }
- Kolo( double r ) : promien( 0 )
- {
- ustawPromien( r );
- }
- Kolo() : promien( 0 )
- {
- }
- void ustawPromien( double promien )
- {
- if( promien >= 0 )
- Kolo::promien = promien;
- }
- double pobierzPromien()
- {
- return promien;
- }
- double obliczPole()
- {
- return M_PI * promien * promien;
- }
- private:
- double promien;
- };
- class FabrykaFigur
- {
- public:
- virtual Figura * utworzFigure( int nrFigury )
- {
- switch( nrFigury )
- {
- case 1 : return new Kwadrat;
- case 2 : return new Kolo;
- default : return 0;
- }
- }
- };
- class GlupiaFabrykaFigur : public FabrykaFigur
- {
- public:
- Figura * utworzFigure( int nrFigury )
- {
- return 0;
- }
- };
- class FiguryWejscie
- {
- public:
- void czytajParametryFigury( Figura * figura )
- {
- if( stricmp( figura->podajNazwe(), "Kwadrat" ) == 0 )
- {
- double bok;
- cout << "\nPodaj bok: ";
- cin >> bok;
- ( ( Kwadrat * )figura )->ustawBok( bok );
- }
- if( stricmp( figura->podajNazwe(), "Kolo" ) == 0 )
- {
- double r;
- cout << "\nPodaj promien: ";
- cin >> r;
- ( ( Kolo * )figura )->ustawPromien( r );
- }
- }
- };
- class KalkulatorPolFigur
- {
- public:
- int menu()
- {
- cout << "\nWybierz:\n1. Kwadrat\n2. Kolo\n0. Koniec\n>> ";
- int n;
- cin >> n;
- return n;
- }
- void wykonajObliczeniaDlaFigury( Figura * figura )
- {
- cout << endl << "Figura " << figura->podajNazwe();
- cout << ", jej pole: " << figura->obliczPole();
- }
- void obliczPola( FabrykaFigur * fabryka, FiguryWejscie * wejscie )
- {
- int nrFigury;
- Figura * figura = 0;
- do
- {
- nrFigury = menu();
- figura = fabryka->utworzFigure( nrFigury );
- if( figura != 0 )
- {
- wejscie->czytajParametryFigury( figura );
- wykonajObliczeniaDlaFigury( figura );
- delete figura;
- }
- }
- while( nrFigury != 0 );
- }
- };
- // https://pastebin.com/7Aari8MW
- int main()
- {
- KalkulatorPolFigur kalkulator;
- kalkulator.obliczPola( new FabrykaFigur, new FiguryWejscie );
- /*
- int nrFigury;
- Figura * p = 0;
- cout << "Wybierz figure:\n1. Kwadrat\n2. Kolo\n>> ";
- cin >> nrFigury;
- switch( nrFigury )
- {
- case 1: double bok;
- cout << "Podaj bok: ";
- cin >> bok;
- p = new Kwadrat( bok );
- break;
- case 2: double r;
- cout << "Podaj promien: ";
- cin >> r;
- p = new Kolo( r );
- break;
- }
- cout << endl << "Figura " << p->podajNazwe();
- cout << ", jej pole: " << p->obliczPole();
- delete p;
- */
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement