我不希望你为我做整个功能......我只需要一些提示。
例如,如果我有一个类似:{1,2,3} ...
的数组它应该看起来像:{1,1,2,2,3,3}
编辑:到目前为止,这是我的功能:int ExpandArray(const int expanded[], const int arrayLength, const int duplicate, int* newSizePtr)
{
int newLen = arrayLength * duplicate;
int newArray[] = new newArray[newLen];
return newArray;
}
答案 0 :(得分:1)
This is the final result
int* ExpandArray(const int[], const int, const int, int*);
int main
{
int arr[] = {1, 2, 3};
int size;
int * expanded = ExpandArray(arr, 3, 2, &size);
cout << "{ ";
for(int i = 0; i < size; i++)
cout << expanded[i] << " ";
cout << "}" << endl;
delete [] expanded;
cout << endl;
}
int* ExpandArray(const int expanded[], const int arrayLength, const int duplicate, int* newSizePtr)
{
int newLen = arrayLength * duplicate;
*newSizePtr = newLen;
int *newArray = new int[newLen];
for (int i=0; i < newLen; i++) {
newArray[i] = expanded[i/duplicate];
}
return newArray;
}
答案 1 :(得分:0)
试试这个:
void myFunction (int p[], int *q) {
int pLen = sizeof(p)/sizeof(*p);
int *q = (int *) malloc(pLen * sizeof(int));
for(int i = 0, j = 0; j < pLen; i += 2, j++) {
q[i] = p[j];
q[i+1] = p[j];
}
for(int i = 0; i < pLen*2; i++) {
cout << q[i] << " ";
}
}
答案 2 :(得分:0)
您的要求有点不清楚。重复是指初始数组中的单个项目应出现在最终数组中的次数吗?我会假设你的意思是基于你到目前为止的代码。
由于你知道初始数组中每个项目应该在最终数组中有多少,我要做的是遍历初始数组中的每个元素。现在,在每个元素的每个循环中,将其添加n次(或重复次数)到最终数组。您可以为最终数组使用单独的计数器,因为它需要在一个循环中多次递增。