Advertisement
Guest User

Untitled

a guest
Jun 12th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.95 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement