Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- void Show(int* mass, int size)
- {
- for (int i = 0; i < size; i++)
- cout << mass[i] << " ";
- }
- //int* Add(int* mass, int& size)
- //{
- // int* temp = new int[size + 1];
- // for (int i = 0; i < size; i++)
- // temp[i] = mass[i];
- // delete[] mass;
- // mass = temp;
- // mass[size] = rand() % 100;
- // size++;
- // Show(mass, size);
- // return mass;
- //}
- void Add(int*& mass, int& size)
- {
- int* temp = new int[size + 1];//создание нового массива
- for (int i = 0; i < size; i++)//перебираем все элементы массива
- temp[i] = mass[i];//копируем в ноывй массив
- delete[] mass;//зачищаем память от старого массива
- mass = temp;//в указатель записали адрес нового массива
- mass[size] = rand() % 100;//добавили в конец случайное значение
- size++;//изменили размер на +1
- Show(mass, size);//вывели массив на экран
- }
- //функция удаления последнего элемента массива
- //принимает указатель на массив (по ссылке) и размер массива (по ссылке)
- void Del(int*& mass, int& size)
- {
- int* temp = new int[size - 1];//создаем новый массив размером -1
- for (int i = 0; i < size - 1; i++)//цикле копируем все элементы
- temp[i] = mass[i];//кроме последнего
- delete[] mass;//удаляем старый массив
- mass = temp;//перезаписываем адрес в указатель
- size--;//уменьшаем размерность
- Show(mass, size);
- }
- //добавление элементов по индексу. Получает указатель на массив, размер
- //массива (по ссылке) и индекс добавляемого элемента
- void AddIndex(int*& mass, int& size, int index)
- {
- int* temp = new int[size + 1];//создаем временный массив на +1 элемент
- for (int i = 0; i < size + 1; i++)//перебираем все элементы массива
- {
- if (i < index)//если номер текущего элемента меньше индекса
- temp[i] = mass[i];//копируем элементы как есть
- else if (i > index)//если больше индекса
- temp[i] = mass[i - 1];//копируем со смещением в 1 элемент
- }
- delete[] mass;//удаляем старый массив
- mass = temp;//перезаписываем указатели
- mass[index] = rand() % 100;//вставляем в ячейку новый элемент
- size++;//изменяем размер на +1
- }
- void DelIndex(int*& mass, int& size, int index)
- {
- int* temp = new int[size - 1];
- for (int i = 0;i < size;i++)
- {
- if (i < index)
- temp[i] = mass[i];
- else if (i > index)
- temp[i - 1] = mass[i];
- }
- delete[] mass;
- mass = temp;
- size--;
- }
- int main()
- {
- srand(time(0));
- int size = 0;
- int* mass = nullptr;
- int choice;
- bool job = 1;
- int index;
- while (job)
- {
- cout << "\nEnter your choice\n1-Add\n2-Show\n3-Delete\n";
- cout << "4-Add Index\n5-Delete Index\n0-Exit\n";
- cin >> choice;
- switch (choice)
- {
- case 1:
- //mass = Add(mass, size); break;
- Add(mass, size); break;
- case 2: Show(mass, size); break;
- case 3:
- if (size == 0)
- cout << "Array is empty\n";
- else
- Del(mass, size);
- break;
- case 4:
- cout << "Enter index\n"; cin >> index;
- if (index < 0 || index > size)
- cout << "Wrong index\n";
- else
- AddIndex(mass, size, index);
- break;
- case 5:
- cout << "Enter index\n"; cin >> index;
- if (index < 0 || index > size-1)
- cout << "Wrong index\n";
- else
- DelIndex(mass,size,index);
- break;
- case 0: job = 0; break;
- default:cout << "Wrong choice\n";break;
- }
- }
- delete[] mass;
- }
- /*
- Имеется динамический массив произвольного размера. Удалить
- из него все значения меньше 50
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement