View difference between Paste ID: da99ASej and xP0Waqf7
SHOW: | | - or go back to the newest paste.
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
}