Advertisement
szmelu

zaj5

Nov 22nd, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.56 KB | None | 0 0
  1. //header.h
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <cmath>
  5. #include <ctime>
  6. using namespace std;
  7. class Zawodnik {
  8. int dane;
  9. static int licznik;
  10. int kategoria;
  11. public:
  12. void preinKategoria(Zawodnik&);
  13. void predeKategoria(Zawodnik&);
  14. void friend wypisz_zawodnika(Zawodnik&);
  15. int getKategoria();
  16. int getDane();
  17. Zawodnik();
  18.  
  19. };
  20. class Stol {
  21. int ilosc_zawodnikow = 0;
  22. int id;
  23. static int licznik;
  24. int stan = 0;
  25. Zawodnik **zawodnicy;
  26. const int LIMIT = 2;
  27. public:
  28. int get_id();
  29. void friend wypisz_stol(Stol&);
  30. bool friend operator!=(Stol&, Stol&);
  31. bool friend operator==(Stol&, Stol&);
  32. Stol friend operator+=(Stol&, Zawodnik&);
  33. Stol friend operator-=(Stol&, Zawodnik&);
  34. Stol friend operator++(Stol&);
  35. Stol friend operator--(Stol&);
  36. Stol();
  37. Stol(const Stol&);
  38.  
  39. };
  40. struct backup {
  41. Stol *numer_gry;
  42. static int licznik;
  43. int id;
  44. backup *next;
  45. void add(backup *&, Stol&);
  46. void show(backup*, int);
  47. Stol copy(backup*, int);
  48. };
  49. //zawodnik
  50. #include "Header.h"
  51. int Zawodnik::licznik = 0;
  52. Zawodnik::Zawodnik()
  53. {
  54. dane = ++licznik;
  55. kategoria = rand() % 7 + 1;
  56. }
  57. int Zawodnik::getKategoria()
  58. {
  59. return kategoria;
  60. }
  61. int Zawodnik::getDane()
  62. {
  63. return dane;
  64. }
  65. void Zawodnik::preinKategoria(Zawodnik &a)
  66. {
  67. a.kategoria++;
  68. }
  69. void Zawodnik::predeKategoria(Zawodnik&a)
  70. {
  71. a.kategoria--;
  72. }
  73. //Stol
  74. #include "Header.h"
  75. int Stol::licznik = 0;
  76. Stol::Stol()
  77. {
  78. id=++licznik;
  79. zawodnicy = new Zawodnik*[2];
  80. }
  81. Stol operator+=(Stol&A, Zawodnik&a)
  82. {
  83. if (A.stan < A.LIMIT)
  84. {
  85. A.zawodnicy[A.stan] = &a;
  86. A.stan++;
  87. A.ilosc_zawodnikow++;
  88. return A;
  89. }
  90. else
  91. {
  92. cout << "stol pelny" << endl;
  93. return A;
  94. }
  95. }
  96. bool operator==(Stol&A, Stol&B)
  97. {
  98. if(A.zawodnicy==B.zawodnicy)
  99. /*
  100. if (A.ilosc_zawodnikow == B.ilosc_zawodnikow && A.id == B.id && A.zawodnicy[0]->getDane() == B.zawodnicy[0]->getDane() && A.zawodnicy[0]->getKategoria() == B.zawodnicy[0]->getKategoria() && A.zawodnicy[1]->getDane() == B.zawodnicy[1]->getDane() && A.zawodnicy[1]->getKategoria() == B.zawodnicy[1]->getKategoria())*/
  101. return true;
  102. else
  103. return false;
  104. }
  105. bool operator!=(Stol&A, Stol&B)
  106. {
  107. if (A.zawodnicy == B.zawodnicy)
  108. /*
  109. if (A.ilosc_zawodnikow == B.ilosc_zawodnikow && A.id == B.id && A.zawodnicy[0]->getDane() == B.zawodnicy[0]->getDane() && A.zawodnicy[0]->getKategoria() == B.zawodnicy[0]->getKategoria() && A.zawodnicy[1]->getDane() == B.zawodnicy[1]->getDane() && A.zawodnicy[1]->getKategoria() == B.zawodnicy[1]->getKategoria())*/
  110. return false;
  111. else
  112. return true;
  113. }
  114. Stol operator-=(Stol &A, Zawodnik&a)
  115. {
  116. if (A.zawodnicy[0]->getDane() == a.getDane())
  117. {
  118. A.zawodnicy[0] = A.zawodnicy[1];
  119. A.zawodnicy[0] = NULL;
  120. A.ilosc_zawodnikow--;
  121. A.stan--;
  122. return A;
  123. }
  124. else if (A.zawodnicy[1]->getDane() == a.getDane())
  125. {
  126. A.zawodnicy[1] = NULL;
  127. A.ilosc_zawodnikow--;
  128. A.stan--;
  129. return A;
  130. }
  131. else
  132. {
  133. cout << "Nie ma takiego zawodnika" << endl;
  134. return A;
  135. }
  136.  
  137.  
  138. }
  139. int Stol::get_id()
  140. {
  141. return id;
  142. }
  143. Stol::Stol(const Stol& kStol)
  144. {
  145. ilosc_zawodnikow = kStol.ilosc_zawodnikow;
  146. id = kStol.id;
  147. zawodnicy = kStol.zawodnicy;
  148. zawodnicy[1] = kStol.zawodnicy[1];
  149. zawodnicy[0] = kStol.zawodnicy[0];
  150. stan = kStol.stan;
  151.  
  152. }
  153. Stol operator++(Stol&A)
  154. {
  155. if (A.zawodnicy[0]->getKategoria() < 7)
  156. A.zawodnicy[0]->preinKategoria(*A.zawodnicy[0]);
  157. if (A.zawodnicy[1]->getKategoria() < 7)
  158. A.zawodnicy[1]->preinKategoria(*A.zawodnicy[1]);
  159. return A;
  160.  
  161. }
  162. Stol operator--(Stol&A)
  163. {
  164. if (A.zawodnicy[0]->getKategoria() > 0)
  165. A.zawodnicy[0]->predeKategoria(*A.zawodnicy[0]);
  166. if (A.zawodnicy[1]->getKategoria() > 0)
  167. A.zawodnicy[1]->predeKategoria(*A.zawodnicy[1]);
  168. return A;
  169. }
  170. //backup
  171. #include "Header.h"
  172. int backup::licznik = 0;
  173. void backup::add(backup *&H, Stol &A)
  174. {
  175. backup*temp = new backup;
  176. temp ->next = H;
  177. temp->id = ++licznik;
  178. temp->numer_gry = new Stol(A);
  179. H = temp;
  180. }
  181. void backup::show(backup * H, int x)
  182. {
  183. backup *temp = H;
  184. while (temp != NULL)
  185. {
  186. if (temp->id == x)
  187. wypisz_stol(*temp->numer_gry);
  188. temp = temp->next;
  189. }
  190. }
  191. Stol backup::copy(backup*H, int x)
  192. {
  193. backup *temp = H;
  194. while (temp != NULL)
  195. {
  196. if (temp->id == x)
  197. return *temp->numer_gry;
  198. temp = temp->next;
  199. }
  200.  
  201. }
  202. void show(backup * H)
  203. {
  204. backup *temp = H;
  205. while (temp != NULL) {
  206. wypisz_stol(*temp->numer_gry);
  207. temp = temp->next;
  208. }
  209. }
  210. //main
  211. #include "Header.h"
  212. #include <ctime>
  213. using namespace std;
  214. void wypisz_stol(Stol&A)
  215. {
  216. cout << "Id stolu: " << A.licznik << endl;
  217. cout << "Stan: " << endl;
  218. if (A.stan == 1)
  219. cout << "Oczekiwanie na zawodnika" << endl;
  220. else if (A.stan == 0)
  221. cout << "Oczekiwanie na zawodnikow" << endl;
  222. else if (A.stan == 2)
  223. {
  224. cout << "Gotowy" << endl;
  225. cout << "Zawodnik 1: " << A.zawodnicy[0]->getDane() << "(" << A.zawodnicy[0]->getKategoria() << ")" << endl;
  226. cout << "Zawodnik 2: " << A.zawodnicy[1]->getDane() << "(" << A.zawodnicy[1]->getKategoria() << ")" << endl;
  227.  
  228. }
  229.  
  230. }
  231. void wypisz_zawodnika(Zawodnik&a)
  232. {
  233. cout << "Id zawodnika: " << a.dane << endl;
  234. cout << "Kategoria: " << a.kategoria << endl;
  235. }
  236. int main()
  237. {
  238. srand(time(NULL));
  239. backup *H = NULL;
  240. Zawodnik a;
  241. Zawodnik b;
  242. Zawodnik c;
  243. wypisz_zawodnika(a);
  244. wypisz_zawodnika(b);
  245.  
  246. Stol A;
  247. A += a;
  248. H->add(H, A);
  249. if (A == H->copy(H, 1))
  250. cout << "TRUE" << endl;
  251. else
  252. cout << "FALSE" << endl;
  253. A += b;
  254. H->add(H, A);
  255. A -= b;
  256. H->add(H, A);
  257. A += b;
  258. H->add(H, A);
  259. if (H->copy(H, 1) != H->copy(H, 2))
  260. cout << "TRUE" << endl;
  261. else
  262. cout << "FALSE" << endl;
  263. ++A;
  264. wypisz_stol(A);
  265. --A;
  266. wypisz_stol(A);
  267.  
  268.  
  269. system("pause");
  270. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement