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 | } |