Intereting Posts
Резьбовые строительные блоки (TBB) запускают задачу с лямбдой Несоответствие между оператором istream >> (double & val) между libc ++ и libstdc ++ Поля в байтах пропусков структуры Как я могу вернуть массив в C ++? Ошибка TRK0005 Не удалось найти: «fxc.exe». Система не может найти указанный файл Ограничить функцию шаблона Данные не правильно выровнены в Visual Studio, если они запущены в отладчике Используемый случай указателя на массив с неопределенными границами в C ++ (не в C) Предел частоты записи в общую память? Когда следует использовать SecureZeroMemory ()? Как правильно реализовать создание (и распределение) списка объектов, известных только абстрактной базой в C ++? Запись в матрицу в .oct-файле без цикла? Ссылка на C ++ меняется, когда push_back новый элемент в std :: vector ISampleGrabber :: BufferCB для IplImage; отображение в OpenCV показывает искаженное изображение – C ++ getaddrinfo: каким образом AI_PASSIVE игнорируется, если указано имя nodename?

функция удваивает размер массива произвольное количество раз?

Я пытаюсь получить эту функцию для создания нового массива, равного 2x размера аргумента массива, скопировать содержимое в новый массив и для второй половины массива создать новые значения, выполнив 2 * значения в первом половину массива, затем удалите исходный массив. Повторите этот процесс за указанное количество раз, затем верните новый массив. Я чувствую, что у меня есть правильный алгоритм, но мой код не работает. Пожалуйста помоги!

int *ArrayDynamicAllocation(int array[], int size, int number) { int *new_array = NULL; for(int i=0; i<number-1; i++) { new_array = new int[size*2]; for(int j=0; j<size-1; j++) { new_array[j]=array[j]; new_array[j+size]=2*array[j]; } array=new_array; delete[] array; size=size*2; } return new_array; } 

Пример вывода будет, если моя информация для ввода в мою функцию была int arr [2] = {0,1}; array_size = 2; число = 3; Я хочу, чтобы он выводил 0 1 0 2 0 2 0 4 0 2 0 4 0 4 0 8

 int *ArrayDynamicAllocation(int array[], int size, int number) { int *new_array = NULL; int *tmp_array = new int[array.length()]; for(int k=0; k 

c массив от 0 до размера-1
менять

 for(int i=0; i 

в

 for(int i=0; i<=number-1; i++) 

менять

 for(int j=0; j 

в

 for(int j=0; j<=size-1; j++) 

вы удаляете неправильный массив
менять

 array=new_array; delete[] array; 

в

 delete[] array; array=new_array; 
  template void changeSize1d(T*&a, const int oldSize, const int newSize){ if(newSize<0)return 0; T*temp new T[newSize]; int number = min(oldSize, newSize); copy(a, a+number, temp); delete [] a; a = temp; }