Advertisement
DoromaAnim

dsadsa

Mar 28th, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.06 KB | None | 0 0
  1. #include "kolejka.hpp"
  2. #include <iostream>
  3.  
  4. kolejka::kolejka(int poj)
  5. :pojemnosc{poj}, pocz{0}, ile{0}
  6. {
  7. kol = new string[pojemnosc];
  8. }
  9.  
  10. kolejka::kolejka()
  11. :kolejka(1) {};
  12.  
  13. kolejka::kolejka(kolejka&& kolejka1)
  14. {
  15. pojemnosc = kolejka1.pojemnosc;
  16. pocz = kolejka1.pocz;
  17. ile = kolejka1.ile;
  18. kol = kolejka1.kol;
  19. kolejka1.kol = nullptr;
  20. }
  21.  
  22. kolejka::kolejka(initializer_list<string> lista)
  23. {
  24. pojemnosc = lista.size();
  25. pocz = 0;
  26. ile = lista.size();
  27. kol = new string[pojemnosc];
  28. int temp = 0;
  29. for(auto it = lista.begin(); it != lista.end(); ++it, ++temp)
  30. {
  31. kol[temp] = *it;
  32. }
  33. }
  34.  
  35. kolejka::kolejka(const kolejka& kolejka1)
  36. {
  37. pojemnosc = kolejka1.pojemnosc;
  38. pocz = kolejka1.pocz;
  39. ile = kolejka1.ile;
  40. kol = new string[pojemnosc];
  41. for(int i = 0; i < ile; ++i)
  42. {
  43. kol[(i + pocz) % pojemnosc] = kolejka1.kol[(i + pocz) % pojemnosc];
  44. }
  45. }
  46.  
  47. kolejka::~kolejka()
  48. {
  49. if(kol != nullptr)delete[] kol;
  50. }
  51.  
  52. int kolejka::rozmiar()
  53. {
  54. return ile;
  55. }
  56.  
  57. string kolejka::wyciagnij()
  58. {
  59. if(!ile)return kol[pocz];
  60. int prev = pocz;
  61. pocz = (pocz + 1) % pojemnosc;
  62. --ile;
  63. return kol[prev];
  64. }
  65.  
  66. string kolejka::sprawdz()
  67. {
  68. return kol[pocz];
  69. }
  70.  
  71. void kolejka::wloz(const string& str)
  72. {
  73. int ni = (pocz + ile) % pojemnosc;
  74. kol[ni] = str;
  75. ++ile;
  76. }
  77.  
  78. kolejka& kolejka::operator= (const kolejka& kolejka1)
  79. {
  80. if(this == &kolejka1)return *this;
  81. pojemnosc = kolejka1.pojemnosc;
  82. pocz = kolejka1.pocz;
  83. ile = kolejka1.ile;
  84. kol = new string[pojemnosc];
  85. for(int i = 0; i < ile; ++i)
  86. {
  87. kol[(i + pocz) % pojemnosc] = kolejka1.kol[(i + pocz) % pojemnosc];
  88. }
  89. return *this;
  90. }
  91.  
  92. kolejka& kolejka::operator= (kolejka&& kolejka1)
  93. {
  94. pojemnosc = kolejka1.pojemnosc;
  95. pocz = kolejka1.pocz;
  96. ile = kolejka1.ile;
  97. kol = kolejka1.kol;
  98. kolejka1.kol = nullptr;
  99. return *this;
  100. }
  101.  
  102.  
  103.  
  104. #pragma once
  105.  
  106. #include <string>
  107.  
  108. using namespace std;
  109.  
  110. class kolejka
  111. {
  112. private:
  113. int pojemnosc;
  114. int pocz;
  115. int ile;
  116. string* kol;
  117.  
  118. public:
  119. kolejka();
  120. kolejka(int poj);
  121. kolejka(kolejka&& kolejka1);
  122. kolejka(const kolejka& kolejka1);
  123. kolejka(initializer_list<string> lista);
  124. ~kolejka();
  125.  
  126. int rozmiar();
  127. string wyciagnij();
  128. string sprawdz();
  129. void wloz(const string& str);
  130.  
  131. kolejka& operator= (const kolejka& kolejka1);
  132.  
  133. kolejka& operator= (kolejka&& kolejka1);
  134. };
  135.  
  136.  
  137.  
  138.  
  139. #include <iostream>
  140. #include "kolejka.hpp"
  141.  
  142. using namespace std;
  143.  
  144. int main()
  145. {
  146. int i = 1;
  147. kolejka* kol = new kolejka({"a", "bc", "de"});
  148. (*kol) = (*kol);
  149.  
  150. while(i)
  151. {
  152. cout << "Wpisz znak odpowiadajacy temu co chcesz zrobic:\n";
  153. cout << "1 - sprawdzenie rozmiaru kolejki\n";
  154. cout << "2 - wlozenie napisu do kolejki\n";
  155. cout << "3 - wyciagniecie napisu z kolejki\n";
  156. cout << "4 - sprawdzenie jaki napis jest na poczatku kolejki\n";
  157. cout << "q - wyjscie\n\n";
  158. char a;
  159. cin >> a;
  160. switch(a)
  161. {
  162. case '1':
  163. {
  164. cout << "Rozmiar kolejki to: " << kol->rozmiar() << "\n\n";
  165. break;
  166. }
  167. case '2':
  168. {
  169. string t;
  170. cin >> t;
  171. kol->wloz(t);
  172. cout << "\n";
  173. break;
  174. }
  175. case '3':
  176. {
  177. cout << "Wyjety napis to: " << kol->wyciagnij() << "\n\n";
  178. break;
  179. }
  180. case '4':
  181. {
  182. cout << "Na poczatku kolejki jest napis: " << kol->sprawdz() << "\n\n";
  183. break;
  184. }
  185. case 'q':
  186. {
  187. i = 0;
  188. break;
  189. }
  190. default:
  191. {
  192. cout << "Nieprawidlowe polecenie\n\n";
  193. break;
  194. }
  195. }
  196. }
  197.  
  198. delete kol;
  199. return 0;
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement