我目前正在尝试学习C ++,我正在做的其中一项培训练习要求我执行以下操作:
创建一个动态数组,向其中添加100个int值。
编写一个计算每个数组元素的平方的函数,并将此int值保存为数组中的位置100 + element_index。
目前我已经创建了一个动态数组并用伪随机值填充它。我想要做的是计算这些随机值的平方,并在数组的末尾“追加”它们。
变量firstArray是先前定义的,但设置为100。
typedef int* intPtr;
...
...
srand((unsigned)time(0));
intPtr myArray;
myArray = new int[firstArray];
for (int i = 0; i < firstArray; i++)
ptr[i] = (rand() % 10);
这将创建我的初始动态数组,并为数组中的每个位置提供0到10之间的随机值。
如果我不必使用函数,我可以轻松地创建一个新的动态数组,复制前100个值,然后计算方块并将它们放在最后。我尝试了一些伪代码来进行练习,但我不确定如何正确实现它。
Create dynamic array of size 100, called myArray
Fill each indexed location with a random value between 0 and 10
Pass the dynamic array into a function
Function creates a new dynamic array of size 200
The values on location 0-99 from myArray are copied over
Calculate the square of the value on location n, and write it to location n+100
Return the dynamic array
Delete [] myArray
Create new dynamic array of size 200, called myArray
Copy the values from the array returned by my function into myArray
Delete the array returned from my function
我的问题涉及将信息传递给函数,并返回新信息:
如何创建一个可以将动态数组传递给它的函数,让它返回另一个动态数组?
如果无法回答这个问题,我也非常希望得到关于结构的反馈,问题中包含的信息,以及这不是正确的问题类型,所以我可以提出更好的问题。将来
答案 0 :(得分:0)
我没有看到任何要求数组需要分配两次的要求。您可以分配所有内存一次。
// Allocate all the memory.
intPtr myArray = new int[firstArray*2];
// Fill the first part with random numbers
for (int i = 0; i < firstArray; i++)
ptr[i] = (rand() % 10);
答案 1 :(得分:0)
采用动态数组并返回动态数组(整数)的函数将具有以下签名:
int* newArray(int* array, int size);
然后,实现将从以下开始:
int* newArray(int* array, int size)
{
int* ret = new int[size * 2]; // double the size
// stuff to populate ret
return ret;
}
int* myBiggerArray = newArray(myArray, firstArray);
// use myBiggerArray
delete [] myBiggerArray;
另外,请远离typedef
int*
之类的内容。 int*
已经足够简洁明了。