Функции.Динамические массивы
1.Создать функцию, позволяющую добавлять блок элементов в конец массива.
2.Создать функцию, позволяющую вставлять блок элементов, начиная с произвольного индекса массива.
3.Создать функцию, позволяющую удалять блок элементов, начиная с произвольного индекса массива.
int* AddElementForDynamicArray(int*& arr, int& size, int num) {
int* CopyArr = new int[size + 1];
for (int i = 0; i < size; i++) {
*(CopyArr + i) = *(arr + i);
}
CopyArr[size] = num;
delete[] arr;
arr = CopyArr;
size++;
return CopyArr;
}
int* AddElementByIndexForDynamicArray(int* arr, int& size, int num, int index) {
int* newArray = new int[++size];
for (int i = 0; i < index; ++i)
newArray[i] = arr[i];
newArray[index] = num;
for (int i = index; i < size - 1; ++i)
newArray[i + 1] = arr[i];
delete[]arr;
arr = newArray;
return newArray;
}
int* DeletElement(int* arr, int& size, int deletes) {
if (deletes > size || deletes < 1) {
cout << "Error" << endl;
return 0;
}
else {
for (int i = deletes - 1; i < size - 1; i++) {
arr[i] = arr[i + 1];
}
size--;
return arr;
}
}
Значит с этим кодом я в похожих заданиях где я должен был удалить,добавлять в конец или же добавить один элемент по индексу.А в этом задании надо уже провернуть это с целым блоком, как мне это реализовать?
Ответы (1 шт):
Автор решения: user520138
→ Ссылка
#include <iostream>
template <typename T>
void delete_Array(T* arr)
{
delete[] arr;
}
template <typename T>
void show_Array(const T* arrB, const T* const arrE)
{
while (arrB != arrE)
{
std::cout << *arrB++ << ' ';
}
std::cout << std::endl;
}
template <typename T>
void push_back(T*& arr, int& size, T* block, int size_block)
{
size += size_block;
T* new_arr{ new T[size]{} };
int j{ 0 };
for (int i{ 0 }; i < size; ++i)
{
if (i < size - size_block)
{
new_arr[i] = arr[i];
}
else
{
new_arr[i] = block[j++];
}
}
delete[] arr;
arr = new_arr;
}
int main()
{
int size{ 5 };
auto arr{ new int[size] {1,2,3,4,5} };
std::cout << "Array:\n";
show_Array(arr, arr + size);
int size_block{ 5 };
auto block{ new int[size_block] {11,12,13,14,15} };
push_back(arr, size, block, size_block);
std::cout << "An array with a new block of elements:\n";
show_Array(arr, arr + size);
delete_Array(arr);
delete_Array(block);
return 0;
}
Вот так можно сделать.