2016-06-29 47 views
-3

我對C,C++和im試圖在數組中的k個位置插入n個元素並移動數組中的k + 1元素有基本知識。 我已經使用兩個for循環此在n位移動數組元素

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..are一些值

如果初始文件是 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

但在輸出如果即時通訊中插入3 eleme在位置0 NTS,然後在位置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 
+2

C或C++?如果它是C++,則使用'std :: vector' – user463035818

+0

甚至在開始解決算法功能之前。也許最好閱讀一些關於C++基礎知識的書籍;代碼中存在很多語法錯誤 –

+0

在一個問題中合理回答太多,以至於無法將答案和問題置於主題之外。如果可能的話,打破這個片段並報告:) –

回答

0

要在數組的索引k插入n元素,嘗試這種邏輯

初始化具有一原始陣列元素。現在,將變量中的值n,kn元素的值插入另一個數組(例如,to_add [])。現在,初始化陣列長度= 主陣列長度 + n
(1)初始化所有必需的值和數組後,運行一個從index = 0到主數組的索引= k-1的循環,並將這些元素複製到第二個數組。
(2)現在,運行從指數= k索引= k + n - 1的第二回路的第二陣列和複製的所有元素索引的to_add陣列到第二陣列的= index - k
(3)最後,運行從索引的第三循環= k + n索引第二陣列的= (length of second array) - 1和複製索引主陣列到第二陣列的= 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 */ 

我希望你能理解它,它可以解決你的問題。