Последний номер в массиве становится первым - PullRequest
0 голосов
/ 24 февраля 2019

Я знаю, что это легко, но я не понимаю, как мне это сделать.

1 23 29 18 43 20 5 

до

5 1 23 29 18 43 20 

Я думаю, что мы должны использовать цикл for:

for (int i = 0; i < numbers.Count - 1; i++)
{

}

, но я не знаю, что в нем делать.Что-то вроде чисел [i] = числа [i - 1], но это не работает.Я думаю, что есть некоторые проверки, которые я пропускаю.

Ответы [ 5 ]

0 голосов
/ 24 февраля 2019

Вы можете использовать этот метод для смещения вправо:

void ShiftRight(int[] array, int count)
{
    var clone = (int[])array.Clone();
    for (var i = 0; i < array.Length; i++)
        array[(i + count) % array.Length] = clone[i];
}

И использовать его следующим образом:

var a = new int[] { 1, 2, 3, 4 };
ShiftRight(a, 1);
0 голосов
/ 24 февраля 2019

Вот один пользователь:

var numbers = new[] {1, 23, 29, 18, 43, 20, 5};
numbers = new[] {numbers.Last()}.Concat(numbers.Take(numbers.Length - 1)).ToArray();

Это создает новый массив, содержащий последний элемент, а затем объединяет его с исходным массивом, исключая последний элемент.

0 голосов
/ 24 февраля 2019

Вы можете выполнить левый поворот к столу на шесть позиций в вашем случае и создать запрошенную новую таблицу

 int[] myArray = new int[] { 1, 23, 29, 18, 43, 20, 5 };
 var newArray = LeftRotationByD(myArray, 6);

, и ваша функция вращения будет:

 private static int[] LeftRotationByD(int[] a, int k)
        {
            int[] b = new int[a.Length];

            int index;
            int length = a.Length;
            int place;

            for (int i = 0; i < length; i++)
            {
                index = i - k;
                place = length + index;

                if (index >= 0) b[index] = a[i];
                else b[place] = a[i];
            }
            return b;
        }
0 голосов
/ 24 февраля 2019

Самый простой способ, который приходит на ум, - это обратный цикл.

int[] numbers = { 1, 23, 29, 18, 43, 20, 5};
int lastVal = numbers[numbers.Length - 1];
for (int i = numbers.Length -1; i > 0; i--)
    numbers[i] = numbers[i-1];
numbers[0] = lastVal;

Просто цикл с конца (после сохранения последнего значения) и перемещение «вверх» значений, в конце концов замена первого значенияс последним

0 голосов
/ 24 февраля 2019

То, что вы хотите сделать, это создать еще один массив того же размера, что и исходный, затем назначить последний элемент и выполнить цикл по массиву с предыдущего до последнего элемента.

Примерно так:

int[] original = {1, 23, 29, 18, 43, 20, 5};
int[] altered = new int[original.length];

altered[0] = original[original.length - 1];
for (int i = 1; i < original.length - 1; i++)
{
    altered[i] = original[i - 1];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...