我具有C,C ++和im的基本知识,我试图在数组的k个位置插入n个元素,并在数组中移动k + 1个元素。
我为此使用了两个for循环
void insert(int n,int k)
{
int temp=arrayA[k][4];
for(int u=k+1;u<=rowA;u++)
{
arrayA[k+n][4]=arrayA[k+1][4];
arrayA[k+n][3]=Bigradius;
arrayA[k+n][2]=arrayA[k+1][2];
arrayA[k+n][1]=arrayA[k+1][1];
arrayA[k+n][0]=arrayA[k+1][0];
}
for(int pos=k;pos<=k+n-1;pos++,)
{
arrayA[pos][4]=temp;
arrayA[pos][3]=B
arrayA[pos][2]=s1;
arrayA[pos][1]=s2;
arrayA[pos][0]=s3;
}
}
其中n是新元素的编号,k是插入新元素的位置,s1,s2,s3 ..是一些值
如果初始文件是
0.74172455 0.03613250 0.82822931 0.03121938 0
0.45620244 0.33476580 0.92169053 0.03121938 1
0.13701758 0.74540644 0.56569663 0.03121938 2
0.94162524 0.13094005 0.62107182 0.03121938 3
但是在输出中,如果我在位置0插入3个元素,则位置1,2的元素丢失
-0.0104065 0.0312194 0.0728452 0.0104065 0
0.0104065 -0.0312194 0.0520323 0.0104065 0
0.0104065 -0.0312194 0.0520323 0.0312194 0
0.941625 0.13094 0.621072 0.0312194 3
最佳答案
要将n
元素插入数组的索引k
,请尝试以下逻辑:
初始化具有元素的原始数组。现在,获取变量中的n
,k
值和n个元素,以插入用户的另一个数组中(例如to_add [])。现在,初始化第二个数组length =主数组长度+ n。
(1)初始化所有必需的值和数组,然后运行从主数组的index = 0
到index = k-1
的循环,然后将这些元素复制到第二个数组。
(2)现在,为第二个数组从索引= k
到索引= k + n - 1
运行第二个循环,并将to_add数组的index = index - k
的所有元素复制到第二个数组中。
(3)最后,从索引= k + n
到第二个数组的index = (length of second array) - 1
运行第三个循环,并将主数组的index = index - n
的所有元素复制到第二个数组中。
这是上述逻辑的C ++代码。
int k,n;
int main_array[x] = { /* elements of the original array */ };
/* display the main array */
cout << "Enter index position at which to enter elements \n" ;
cin >> k;
cout << "\n How many elements do you want to enter? \n" ;
cin >> n;
int to_add[n];
int final_array[x+n];
/* accept elements to be added into the to_add array */
//first loop
for(int i = 0; i < k; i++){
final_array[i] = main_array[i];
}
//second loop
for(int i = k; i < k+n; i++){
final_array[i] = to_add[i-k];
}
//last loop
for(int i = k+n; i < x+n; i++){
final_array[i] = main_array[i-n];
}
/* display the final_array */
希望您能理解并解决您的问题。
关于c++ - 将数组元素移动n个位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38095046/