2016-06-29 3 views
-3

У меня есть базовые знания в C, C++ и им, пытающиеся вставить n элементов в k позиций в массиве и сдвинуть элемент k + 1 в массиве. я использовал два для петель для этогоСмещение элементов массива по 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; 
    } 
} 

где п нет новых элементов, к является положение, в котором новые элементы вставлены, 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 NTS в положении 0, то элементы в положении 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++? используйте 'std :: vector', если это C++ – user463035818

+0

Прежде чем вы начнете решать алгоритмические функции. Может быть, лучше всего читать некоторые книги по основам C++; в коде есть много синтаксических ошибок. –

+0

Слишком много, чтобы разумно ответить в одном вопросе, чтобы не отвечать на вопрос и отвечать на вопросы. Если возможно, сломайте фрагмент вниз и сообщите :) –

ответ

0

Для вставки n элементов по индексу k массива, попробуйте эту логику:

Инициализировать оригинальный массив, имеющий элементы. Теперь возьмите значения n, k в переменных и n элементов для вставки в другой массив (скажем to_add []) от пользователя. Теперь инициализируйте второй массив длины = длина основной решетки + n.
(1) После инициализации всех необходимых значений и массивов запустите цикл из индекса = 0 в индекс = k-1 основного массива и скопируйте эти элементы во второй массив.
(2) Теперь, запустить вторую петлю из индекса = k к индексу = k + n - 1 для второго массива и скопировать все элементы для индекса = index - k из массива to_add во второй массив.
(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 */ 

Надеюсь, вы понимаете это, и это решает вашу проблему.

Смежные вопросы