Advertisement
Guest User

Untitled

a guest
Jan 16th, 2019
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.87 KB | None | 0 0
  1. // Kolokwium2.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <string>
  7.  
  8. using namespace std;
  9.  
  10. class Figura
  11. {
  12. private:
  13. string nazwa;
  14.  
  15. public:
  16. virtual double pole()
  17. {
  18. return -1;
  19. }
  20.  
  21. virtual string typ()
  22. {
  23. return "figura";
  24. }
  25.  
  26. Figura(string name) : nazwa(name) {}
  27.  
  28. virtual void wyswietl()
  29. {
  30. cout << nazwa << " ";
  31. }
  32. string getNazwa()
  33. {
  34. return nazwa;
  35. }
  36.  
  37. Figura() {}
  38. };
  39.  
  40. class Kwadrat : public Figura
  41. {
  42. private:
  43. double bok;
  44. string nazwa;
  45. //string typ = "kwadrat";
  46.  
  47.  
  48. public:
  49.  
  50. Kwadrat() {};
  51.  
  52. Kwadrat(string name, double b) :Figura(name), bok(b) {}
  53.  
  54. double pole()
  55. {
  56. return bok * bok;
  57. }
  58.  
  59. string typ()
  60. {
  61. return "kwadrat";
  62. }
  63.  
  64. void wyswietl()
  65. {
  66.  
  67. Figura::wyswietl();
  68.  
  69. cout << nazwa << " Bok " << bok << " ";
  70. }
  71.  
  72. Kwadrat( Kwadrat &kwa)
  73. {
  74. nazwa = kwa.getNazwa();
  75. bok = kwa.bok;
  76. }
  77. };
  78.  
  79.  
  80. class Trojkat : public Figura
  81. {
  82. private:
  83. double podstawa, wysokosc;
  84. string nazwa;
  85. //string typ = "trojkat";
  86.  
  87. public:
  88.  
  89. Trojkat() {};
  90.  
  91. Trojkat(string name, double p, double w) :nazwa(name), podstawa(p), wysokosc(w) {}
  92.  
  93. double pole()
  94. {
  95. return podstawa*wysokosc/2;
  96. }
  97.  
  98. string typ()
  99. {
  100. return "trojkat";
  101. }
  102.  
  103. void wyswietl()
  104. {
  105. Figura::wyswietl();
  106. cout <<nazwa<<" Podstawa"<< podstawa << " " << wysokosc << " ";
  107. }
  108.  
  109. Trojkat(Trojkat &troj)
  110. {
  111. nazwa = troj.getNazwa();
  112. podstawa = troj.podstawa;
  113. wysokosc = troj.wysokosc;
  114. }
  115. };
  116.  
  117.  
  118.  
  119. class Pojemnik
  120. {
  121. public:
  122.  
  123. int rozmiar;
  124. Figura ***Tab = new Figura**[rozmiar];
  125. int licznik_t = 0, licznik_k = 0;
  126. int licznik=0;
  127.  
  128.  
  129. Pojemnik(int r) : rozmiar(r) {}
  130.  
  131. void wyswietl_2()
  132. {
  133. for (int i = 0; i < 2; i++)
  134. for (int j = 0; j < licznik; j++)
  135. {
  136. Tab[i][j]->wyswietl();
  137. Tab[i][j]->typ();
  138. }
  139.  
  140. }
  141.  
  142. void dodaj_K(Kwadrat obiekt)
  143. {
  144. if (licznik < rozmiar)
  145. {
  146. Tab[0][licznik_k] = new Kwadrat(obiekt);
  147. //Tab[licznik] = obiekt;
  148. licznik_k++;
  149. licznik = licznik_t + licznik_k;
  150. //cout << "Licznik k = " << licznik_k << endl;
  151. //cout << " licznik " << licznik << endl;
  152.  
  153. //Tab[0][licznik_k]->wyswietl();
  154. }
  155. }
  156.  
  157. void dodaj_T(Trojkat obiekt)
  158. {
  159. if (licznik < rozmiar)
  160. {
  161. Tab[1][licznik_t] = new Trojkat(obiekt);
  162. //Tab[licznik] = obiekt;
  163. licznik_t++;
  164. licznik = licznik_t + licznik_k;
  165. //cout << "Licznik t = " << licznik_t << endl;
  166. //cout << " licznik " << licznik << endl;
  167. //Tab[1][licznik_t]->wyswietl();
  168. }
  169. }
  170. void fun()
  171. {
  172. Tab[0] = new Figura*[rozmiar];
  173.  
  174. Tab[1] = new Figura*[rozmiar];
  175. }
  176.  
  177. /*void usun(double u_pole)
  178. {
  179. for (int i = 0; i < rozmiar; i++)
  180. {
  181. if (Tab[i]->pole() == u_pole)
  182. {
  183. delete Tab[i];
  184. }
  185. }
  186. }*/
  187. };
  188.  
  189.  
  190.  
  191.  
  192. int main()
  193. {
  194. int N, M, do_usuniecia;
  195. int licznik_trojkaty=0, licznik_kwadraty=0;
  196.  
  197.  
  198.  
  199. cin >> N;
  200. Pojemnik poj(N);
  201. poj.fun();
  202. cin >> M;
  203. //Trojkat trojkaty[M];
  204. //Kwadrat kwadraty[M];
  205. for (int i = 0; i < M; i++)
  206. {
  207. string nazwa;
  208. string typ;
  209. cin >> typ;
  210. if (typ == "trojkat")
  211. {
  212. //cout << "jestesmy w trojkacie" << endl;
  213. cin >> nazwa;
  214. int podstawa, wysokosc;
  215. cin >> podstawa;
  216. cin >> wysokosc;
  217. Trojkat obiekt(nazwa, podstawa, wysokosc);
  218. licznik_trojkaty++;
  219. poj.dodaj_T(obiekt);
  220. //obiekt.wyswietl();
  221. }
  222. else if (typ == "kwadrat")
  223. {
  224. //cout << "jestesmy w kwadracie" << endl;
  225. cin >> nazwa;
  226. int bok;
  227. cin >> bok;
  228. //cout << "koniec2" << endl;
  229.  
  230. Kwadrat obiekt(nazwa, bok);
  231. //cout << "koniec3" << endl;
  232. licznik_kwadraty++;
  233. poj.dodaj_K(obiekt);
  234. //cout << "koniec4" << endl;
  235. //obiekt.wyswietl();
  236.  
  237. }
  238. }
  239. cout << "koniec" << endl;
  240. poj.wyswietl_2();
  241. cout << "koniec" << endl;
  242.  
  243. poj.Tab[0][0]->wyswietl();
  244. poj.Tab[0][1]->wyswietl();
  245. poj.Tab[1][0]->wyswietl();
  246.  
  247.  
  248.  
  249. return 0;
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement