Advertisement
Guest User

jebać polibude

a guest
Dec 16th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.06 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. //#include <string>
  4. #include <cstdlib>
  5. #include<utility>
  6.  
  7. using namespace std;
  8.  
  9. class Container
  10. {
  11. public:
  12. int m_size;
  13. int *m_array;
  14. int m_counter;
  15.  
  16.  
  17. Container(int size) : m_size(size)
  18. {
  19. m_array = new int[m_size];
  20. m_counter = 0;
  21. }
  22.  
  23. //kopiujacy
  24. Container(const Container &container)
  25. {
  26. m_counter = container.m_counter;
  27. m_size = container.m_size;
  28. m_array = new int[m_size];
  29. for(int i=0; i<m_size; i++)
  30. {
  31. m_array[i]=container.m_array[i];
  32. }
  33. //m_array = container.m_array;
  34. }
  35.  
  36. //przenoszacy
  37. Container(Container &&con)
  38. {
  39. m_counter = con.m_counter;
  40. m_size = con.m_size;
  41. m_array = new int[m_size];
  42. //for(int i=0; i<m_counter; i++)
  43.  
  44. m_array=con.m_array;
  45.  
  46. con.m_array=nullptr;
  47. con.m_counter = 0;
  48. con.m_size=0;
  49. //con.m_array=new int[con.counter];
  50. //container.m_array = nullptr;
  51. }
  52.  
  53. ~Container()
  54. {
  55. delete[] m_array;
  56. }
  57.  
  58. void displayArray()
  59. {
  60. for (int i = 0; i < m_counter; ++i)
  61. {
  62. cout << m_array[i] << ' ';
  63. }
  64.  
  65. }
  66.  
  67. void changeSize(int size)
  68. {
  69. int *array = new int[size];
  70. if (size >= m_size)
  71. {
  72. for (int i = 0; i < m_size; ++i)
  73. array[i] = m_array[i];
  74. }
  75. else
  76. {
  77. for (int i = 0; i < size; ++i)
  78. array[i] = m_array[i];
  79. m_counter -= (m_size - size);
  80. }
  81.  
  82. //m_tablica = tablica;
  83. m_size = size;
  84. delete[] array;
  85. }
  86.  
  87. void addItem(int item)
  88. {
  89. if (m_counter >= m_size)
  90. {
  91. int *array = new int[m_size + 1];
  92. for (int i = 0; i < m_size; ++i)
  93. array[i] = m_array[i];
  94.  
  95. ++m_size;
  96. delete[] array;
  97. m_array[m_counter] = item;
  98. ++m_counter;
  99. }
  100. else
  101. {
  102. m_array[m_counter] = item;
  103. ++m_counter;
  104. }
  105. }
  106.  
  107. void deleteItem(int index)
  108. {
  109. if ((index < 0) || (index > (m_counter - 1)))
  110. {
  111. for (int i = index; i < m_counter; i++)
  112. {
  113. m_array[i] = m_array[i + 1];
  114. }
  115. m_array[m_counter] = 0;
  116. }
  117. else
  118. {
  119. --m_counter;
  120. for (int i = index; i < m_counter; i++)
  121. {
  122. m_array[i] = m_array[i + 1];
  123. }
  124. m_array[m_counter] = 0;
  125. }
  126. }
  127.  
  128.  
  129. int getCounter() { return m_counter; }
  130. int getSize() { return m_size; }
  131. int* getArray() { return m_array; }
  132. };
  133.  
  134.  
  135.  
  136. int main()
  137. {
  138. /*Container container2(3);
  139. container2.addItem(1);
  140. container2.addItem(2);
  141. container2.addItem(3);
  142. container2.displayArray();
  143. container2.deleteItem(0);
  144. container2.displayArray();
  145. container2.addItem(2);
  146. container2.displayArray();
  147. */
  148.  
  149. // cout << "Enter array size ";
  150. int N;
  151. cin >> N;
  152. Container container(N);
  153.  
  154. // cout << "How many elements do you want to enter?";
  155. int H;
  156. cin >> H;
  157. for (int i = 0; i < H; ++i)
  158. {
  159. int A;
  160. cin >> A;
  161. container.addItem(A);
  162. }
  163.  
  164.  
  165. Container cpy_container(container);
  166. //cout << "Enter size of the copy ";
  167. int M;
  168. cin >> M;
  169. cpy_container.changeSize(M);
  170.  
  171. //cout << "How many elements do you want to delete?" << endl;
  172. int K;
  173. cin >> K;
  174.  
  175. for (int i = 0; i < K; ++i)
  176. {
  177. // cout << "Enter index of deleting item: ";
  178. int index;
  179. cin >> index;
  180. cpy_container.deleteItem(index);
  181. }
  182.  
  183. Container new_container(std::move(container));
  184.  
  185.  
  186. container.displayArray();
  187. //cout << " ";
  188. cpy_container.displayArray();
  189. //cout << " ";
  190. new_container.displayArray();
  191.  
  192. return 1;
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement