更改数字时出现问题
Problems changing numbers
寻找一些家庭作业帮助。 不是为了答案,只是为了朝着正确的方向推动。 我们得到一个数组,其中包含一些数字、数组的大小以及我们将其加倍的次数。 我们要将大小加倍,复制相同的数字,然后将后半部分的数字乘以 2。
因此,如果数组是 {0,1} 且编号为 2。最后一个数组将是 {0,1,0,2,0,2,0,4}。
我的代码编译正确并返回一些非常奇怪的数字,对于原始数组 {0,1} 和数字 3,它给了我一堆 0 和中间的随机135057。
这是我的代码:
int *ArrayDynamicAllocation(int array[], int size, int number)
{
for (int runs = 1;runs < number; runs++) {
int new_size = size * 2;
int *new_array = new int[new_size];
for (int x = 0;x < size; x++) {
new_array[x] = array[x];
}
for (int y = size+1; size < new_size; size++) {
new_array[y] = array[y];
}
size = new_size;
array = new_array;
delete [] new_array;
}
return array;
}
正如@Elvisjames评论中所说,array = new_array;
意味着您将指向新创建的new_array
内存的指针分配给array
,delete [] new_array;
意味着您要从内存中删除new_array
和array
。由于以前的分配,array
指向new_array
,删除new_array
意味着删除array
。
因此,最好先删除旧数组,然后将新创建的数组分配给旧数组。
在此循环中:
for (int y = size+1; size < new_size; size++)
{
new_array[y] = array[y];
}
正如@Elvisjames评论中所说,new_array[y] = array[y];
没有array[y]
您应该按如下方式定义ArrayDynamicAllocation
函数:
int *ArrayDynamicAllocation(int array[], int& size, int number)
{
for (int runs = 1;runs < number; runs++)
{
int new_size = size * 2;
int *new_array = new int[new_size];
for (int x = 0;x < size; x++)
{
new_array[x] = array[x];
new_array[x+size]=2*array[x];
}
size = new_size;
// Here you should delete the old array first then assign the newly created array to the old array.
//array = new_array;
//delete [] new_array;
delete [] array;
array = new_array;
}
return array;
}
我已将int size
更改为int& size
以了解新尺寸。
相关文章:
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 输出错误,问题是找到总和5000位数字cpp
- 使用 BMI 计算器对C++中的数字进行四舍五入的问题
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 我的问题是关于C++中数字和序列的重复以及如何打印它们?
- 如何通过使用 2 位或更多数字的 XOR 运算符来执行此操作C++问题
- 在 cpp 中使用较大数字时遇到大数字的问题<iomanip>
- 无法理解代码背后的逻辑,这是在两个给定数字之间生成素数的优化问题
- 数组C++问题中最大和第二大的数字
- 使用用户定义的函数查找数字的幂时出现问题
- C++ - 我在输出时遇到问题,因为我正在收到数字和字母
- C++ 制作一个随机数字/字母生成器,代码中有问题
- 有问题将数字转换为罗马数字
- 使用C ,将转换为char的问题始终具有3位数字
- 优化递归问题以计算超级数字
- 快速读取带有数字 c++ 的二进制文件时出现问题
- 代码问题.使用矢量删除相同的数字,除了它的最后一个入口
- 编程:原理与实践 使用C++ 第 4 章演练步骤 6:关于数字范围的一般问题
- 在C++中使用限制和非常大的数字时出现问题
- 函数以相反的顺序输出输入问题,并改进算法以解释相等的数字