【发布时间】:2017-11-03 18:29:31
【问题描述】:
我试图让这个函数创建一个新数组,使其大小为数组参数的 2 倍,将内容复制到新数组中,对于数组的后半部分,通过执行 2*the values 创建新值在数组的前半部分,然后删除原始数组。重复此过程指定的次数,然后返回新数组。我觉得我的算法正确,但我的代码不起作用。请帮忙!
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}; 数组大小 = 2; 数字 = 3; 我希望它输出 0 1 0 2 0 2 0 4 0 2 0 4 0 4 0 8
【问题讨论】:
-
Off-by-one。
size-1应该是size,number-1应该是number。 -
array=new_array; delete[] array;我认为这不会很好地结束,无论是您的下一次迭代还是您的最终返回值。很确定你想要那些线 reversed。