Advertisement
Guest User

Untitled

a guest
Nov 16th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.89 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <cmath>
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. class Figura
  7. {
  8. public:
  9. virtual char * jakaToFigura() = 0;
  10. virtual double obliczPole() = 0;
  11. };
  12.  
  13. class Kwadrat : public Figura
  14. {
  15. public:
  16.  
  17. char * jakaToFigura() { return "Kwadrat"; }
  18.  
  19. Kwadrat( double b ) : bok( 0 )
  20. {
  21. ustawBok( b );
  22. }
  23.  
  24. Kwadrat() : bok( 0 )
  25. {
  26. }
  27.  
  28. void ustawBok( double bok )
  29. {
  30. if( bok >= 0 )
  31. Kwadrat::bok = bok;
  32. }
  33.  
  34. double pobierzBok()
  35. {
  36. return bok;
  37. }
  38.  
  39. double obliczPole()
  40. {
  41. return bok * bok;
  42. }
  43. private:
  44. double bok;
  45. };
  46.  
  47. class Kolo : public Figura
  48. {
  49. public:
  50.  
  51. char * jakaToFigura() { return "Kolo"; }
  52.  
  53. Kolo( double r ) : promien( 0 )
  54. {
  55. ustawPromien( r );
  56. }
  57.  
  58. Kolo() : promien( 0 )
  59. {
  60. }
  61.  
  62. void ustawPromien( double promien )
  63. {
  64. if( promien >= 0 )
  65. Kolo::promien = promien;
  66. }
  67.  
  68. double pobierzPromien()
  69. {
  70. return promien;
  71. }
  72.  
  73. double obliczPole()
  74. {
  75. return M_PI * promien * promien;
  76. }
  77. private:
  78. double promien;
  79. };
  80.  
  81. class Barbapapa : public Figura
  82. {
  83. public:
  84.  
  85. char * jakaToFigura() { return "Barbapapa"; }
  86.  
  87. Barbapapa()
  88. {
  89. }
  90.  
  91. double obliczPole()
  92. {
  93. return 100;
  94. }
  95. };
  96.  
  97. class Szescian : public Kwadrat
  98. {
  99. public:
  100. char * jakaToFigura() { return "Szescian"; }
  101. Szescian() : Kwadrat()
  102. {
  103. }
  104.  
  105. Szescian( double bok ) : Kwadrat( bok )
  106. {
  107. }
  108.  
  109. double obliczPole()
  110. {
  111. return 6 * Kwadrat::obliczPole();
  112. }
  113. };
  114.  
  115. void obliczIWypisz( Figura * wsk )
  116. {
  117. cout << wsk->jakaToFigura();
  118. cout << " pole to: " << wsk->obliczPole();
  119. }
  120.  
  121. void fun( Figura * figury[], int ileFigur )
  122. {
  123. double suma = 0;
  124. for( int i = 0; i < ileFigur; ++i )
  125. {
  126. cout << endl << figury[ i ]->jakaToFigura();
  127. suma += figury[ i ]->obliczPole();
  128. }
  129. cout << "Suma pol: " << suma;
  130. }
  131. int main()
  132. {
  133. /*
  134. char klawisz;
  135. Figura * f;
  136.  
  137. cout << "Wybierz figure\n1. Kwadrat\n2. Kolo\n3. Barbapapa\n>> ";
  138. cin >> klawisz;
  139. switch( klawisz )
  140. {
  141. case '1': cout << "Podaj bok: ";
  142. double bok;
  143. cin >> bok;
  144. f = new Kwadrat( bok );
  145. break;
  146. case '2': cout << "Podaj promien: ";
  147. double r;
  148. cin >> r;
  149. f = new Kolo( r );
  150. break;
  151. case '3' : f = new Szescian;
  152. break;
  153. }
  154.  
  155. obliczIWypisz( f );
  156.  
  157. delete f;
  158. */
  159.  
  160. const int N = 5;
  161. Figura * figury[ N ];
  162.  
  163. figury[ 0 ] = new Kwadrat( 2 );
  164. figury[ 1 ] = new Kwadrat( 3 );
  165. figury[ 2 ] = new Kolo( 1 );
  166. figury[ 3 ] = new Barbapapa;
  167. figury[ 4 ] = new Szescian( 2 );
  168.  
  169. fun( figury, N );
  170. cin.get();
  171. cin.get();
  172. return EXIT_SUCCESS;
  173. }
  174.  
  175.  
  176.  
  177. /*
  178.  
  179. class Szescian : public Kwadrat
  180. {
  181. public:
  182. Szescian() : Kwadrat()
  183. {
  184. }
  185.  
  186. Szescian( double bok ) : Kwadrat( bok )
  187. {
  188. }
  189.  
  190. double obliczPole()
  191. {
  192. return 6 * Kwadrat::obliczPole();
  193. }
  194. };
  195.  
  196. class Program
  197. {
  198. public:
  199. Program();
  200. ~Program();
  201. void figury();
  202. void bryly();
  203. void wykonanie();
  204.  
  205. private:
  206. void pokazMenuFigury();
  207. void pokazMenuBryly();
  208. void pokazMenu();
  209. void kwadrat();
  210. void kolo();
  211. void prostokat();
  212. void trojkat();
  213.  
  214. void szescian();
  215.  
  216. void czyscEkran();
  217. };
  218.  
  219. void Program::czyscEkran()
  220. {
  221. system( "cls" );
  222. }
  223.  
  224. Program::Program()
  225. {
  226. cout << "\nObliczam pola figur plaskich, wybierz figure";
  227. }
  228.  
  229. Program::~Program()
  230. {
  231. cout << "\nEnter=Koniec programu";
  232. cin.get();
  233. }
  234.  
  235. void Program::pokazMenuFigury()
  236. {
  237. czyscEkran();
  238. cout << "\n1. Kwadrat\n2. Kolo\n3. Prostokat\n4. Trojkat\n\n0. Menu glowne\n>>";
  239. }
  240.  
  241. void Program::figury()
  242. {
  243. char klawisz;
  244. do
  245. {
  246. pokazMenuFigury();
  247. cin >> klawisz;
  248. switch( klawisz )
  249. {
  250. case '1' : kwadrat();
  251. break;
  252. case '2' : kolo();
  253. break;
  254. case '3' : prostokat();
  255. break;
  256. case '4' : trojkat();
  257. break;
  258. }
  259. }
  260. while( klawisz != '0' );
  261. }
  262.  
  263. void Program::pokazMenuBryly()
  264. {
  265. czyscEkran();
  266. cout << "\n1. Szescian\n2. Kula\n3. Prostopadloscian\n4. Graniastoslup\n\n0. Menu glowne\n>>";
  267. }
  268.  
  269.  
  270. void Program::szescian()
  271. {
  272. double bok;
  273. cout << "\nObliczenia dla szescianu\nPodaj dlugosc boku: ";
  274. cin >> bok;
  275.  
  276. Szescian s( bok );
  277. // s.ustawBok( bok );
  278. cout << "Pole szecianu o boku " << s.pobierzBok() << " wynosi: " << s.obliczPole();
  279. cin.ignore();
  280. cin.get();
  281. }
  282.  
  283. void Program::bryly()
  284. {
  285. char klawisz;
  286. do
  287. {
  288. pokazMenuBryly();
  289. cin >> klawisz;
  290. switch( klawisz )
  291. {
  292. case '1' : szescian();
  293. break;
  294. case '2' : ;
  295. break;
  296. case '3' : ;
  297. break;
  298. case '4' : ;
  299. break;
  300. }
  301. }
  302. while( klawisz != '0' );
  303. }
  304.  
  305. void Program::pokazMenu()
  306. {
  307. czyscEkran();
  308. cout << "\n1. Figury\n2. Bryly\n\n0. Koniec\n>>";
  309. }
  310.  
  311. void Program::wykonanie()
  312. {
  313. char klawisz;
  314. do
  315. {
  316. pokazMenu();
  317. cin >> klawisz;
  318. switch( klawisz )
  319. {
  320. case '1' : figury();
  321. break;
  322. case '2' : bryly();
  323. break;
  324. }
  325. }
  326. while( klawisz != '0' );
  327. }
  328.  
  329.  
  330. void Program::kwadrat()
  331. {
  332. double bok;
  333. cout << "\nObliczenia dla kwadratu\nPodaj dlugosc boku: ";
  334. cin >> bok;
  335.  
  336. Kwadrat k;
  337. k.ustawBok( bok );
  338. cout << "Pole kwadratu o boku " << k.pobierzBok() << " wynosi: " << k.obliczPole();
  339.  
  340. // Kwadrat k( bok );
  341. // cout << "Pole kwadratu o boku " << k.pobierzBok() << " wynosi: " << k.obliczPole();
  342.  
  343. }
  344.  
  345. void Program::kolo()
  346. {
  347. }
  348.  
  349. void Program::prostokat()
  350. {
  351. }
  352.  
  353. void Program::trojkat()
  354. {
  355. }
  356.  
  357. int main()
  358. {
  359. Program prog;
  360.  
  361. prog.wykonanie();
  362.  
  363. return EXIT_SUCCESS;
  364. }
  365.  
  366. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement