Перемещение позиций строк в массиве - PullRequest
0 голосов
/ 01 мая 2011
int moveToEnd(string a[], int n, int pos);

Удалите элемент в позиции pos, скопировав все элементы после него на одно место слева. Поместите элемент, который был таким образом исключен, в последнюю позицию массива. Вернуть исходную позицию предмета, который был перемещен в конец. Вот пример:

string actors[5] = { "peter", "lois", "meg", "chris", "stewie" };
int j = moveToEnd(actors, 5, 1);  // returns 1
// actors now contains:  "peter"  "meg"  "chris"  "stewie"  "lois"

Это то, что я имею до сих пор:

int moveToEnd(string a[], int n, int pos)
{int i = 0;
int initial;
int initial2;
int initial3;
for (i=0; i<n; i++)
    {if (i<pos)
        initial=i-1;
    if (i>pos)
        initial2=i-1;
    else 
        pos + (n-pos);
}}

это совершенно неправильно, но я застрял, пытаясь понять, как сдвинуть позицию до конца и чем сдвинуть все остальные элементы влево.

Ответы [ 2 ]

1 голос
/ 01 мая 2011

Вам не нужен второй аргумент, так как вы можете получить длину массива с помощью a.length

Основная логика такова:

  • сохранить элемент вa[pos] в переменной temp String.
  • итерация от a[pos] до a[a.length - 2] сохранение a[pos + 1] до a[pos]
  • сохранение температуры String до a[a.length - 1]
1 голос
/ 01 мая 2011
string save = arr[pos];

for (int i = pos; i < n - 1; i++)
   arr[i] = arr[i + 1];

arr[n - 1] = save;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...