Advertisement
Bertran_rz

Untitled

Sep 30th, 2021
731
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.03 KB | None | 0 0
  1. #include <iostream>
  2.  
  3.  
  4.  
  5. using namespace std;
  6.  
  7.  
  8.  
  9. void Show(int* mass, int size)
  10. {
  11. for (int i = 0; i < size; i++)
  12. cout << mass[i] << " ";
  13. }
  14.  
  15.  
  16.  
  17. //int* Add(int* mass, int& size)
  18. //{
  19. // int* temp = new int[size + 1];
  20. // for (int i = 0; i < size; i++)
  21. // temp[i] = mass[i];
  22. // delete[] mass;
  23. // mass = temp;
  24. // mass[size] = rand() % 100;
  25. // size++;
  26. // Show(mass, size);
  27. // return mass;
  28. //}
  29.  
  30.  
  31.  
  32. void Add(int*& mass, int& size)
  33. {
  34. int* temp = new int[size + 1];//создание нового массива
  35. for (int i = 0; i < size; i++)//перебираем все элементы массива
  36. temp[i] = mass[i];//копируем в ноывй массив
  37. delete[] mass;//зачищаем память от старого массива
  38. mass = temp;//в указатель записали адрес нового массива
  39. mass[size] = rand() % 100;//добавили в конец случайное значение
  40. size++;//изменили размер на +1
  41. Show(mass, size);//вывели массив на экран
  42. }
  43.  
  44.  
  45.  
  46. //функция удаления последнего элемента массива
  47. //принимает указатель на массив (по ссылке) и размер массива (по ссылке)
  48. void Del(int*& mass, int& size)
  49. {
  50. int* temp = new int[size - 1];//создаем новый массив размером -1
  51. for (int i = 0; i < size - 1; i++)//цикле копируем все элементы
  52. temp[i] = mass[i];//кроме последнего
  53. delete[] mass;//удаляем старый массив
  54. mass = temp;//перезаписываем адрес в указатель
  55. size--;//уменьшаем размерность
  56. Show(mass, size);
  57. }
  58.  
  59.  
  60.  
  61. //добавление элементов по индексу. Получает указатель на массив, размер
  62. //массива (по ссылке) и индекс добавляемого элемента
  63. void AddIndex(int*& mass, int& size, int index)
  64. {
  65. int* temp = new int[size + 1];//создаем временный массив на +1 элемент
  66. for (int i = 0; i < size + 1; i++)//перебираем все элементы массива
  67. {
  68. if (i < index)//если номер текущего элемента меньше индекса
  69. temp[i] = mass[i];//копируем элементы как есть
  70. else if (i > index)//если больше индекса
  71. temp[i] = mass[i - 1];//копируем со смещением в 1 элемент
  72. }
  73. delete[] mass;//удаляем старый массив
  74. mass = temp;//перезаписываем указатели
  75. mass[index] = rand() % 100;//вставляем в ячейку новый элемент
  76. size++;//изменяем размер на +1
  77. }
  78.  
  79.  
  80.  
  81. void DelIndex(int*& mass, int& size, int index)
  82. {
  83. int* temp = new int[size - 1];
  84. for (int i = 0;i < size;i++)
  85. {
  86. if (i < index)
  87. temp[i] = mass[i];
  88. else if (i > index)
  89. temp[i - 1] = mass[i];
  90. }
  91. delete[] mass;
  92. mass = temp;
  93. size--;
  94. }
  95.  
  96.  
  97.  
  98. int main()
  99. {
  100. srand(time(0));
  101. int size = 0;
  102. int* mass = nullptr;
  103. int choice;
  104. bool job = 1;
  105. int index;
  106. while (job)
  107. {
  108. cout << "\nEnter your choice\n1-Add\n2-Show\n3-Delete\n";
  109. cout << "4-Add Index\n5-Delete Index\n0-Exit\n";
  110. cin >> choice;
  111. switch (choice)
  112. {
  113. case 1:
  114. //mass = Add(mass, size); break;
  115. Add(mass, size); break;
  116. case 2: Show(mass, size); break;
  117. case 3:
  118. if (size == 0)
  119. cout << "Array is empty\n";
  120. else
  121. Del(mass, size);
  122. break;
  123. case 4:
  124. cout << "Enter index\n"; cin >> index;
  125. if (index < 0 || index > size)
  126. cout << "Wrong index\n";
  127. else
  128. AddIndex(mass, size, index);
  129. break;
  130. case 5:
  131. cout << "Enter index\n"; cin >> index;
  132. if (index < 0 || index > size-1)
  133. cout << "Wrong index\n";
  134. else
  135. DelIndex(mass,size,index);
  136. break;
  137. case 0: job = 0; break;
  138. default:cout << "Wrong choice\n";break;
  139. }
  140. }
  141. delete[] mass;
  142. }
  143. /*
  144. Имеется динамический массив произвольного размера. Удалить
  145. из него все значения меньше 50
  146. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement