1 / 1 / 0
Регистрация: 30.05.2019
Сообщений: 2
1

Сдвиг одномерного массива на n позиций влево, начиная с определённого элемента

19.04.2020, 23:33. Показов 6769. Ответов 1

Author24 — интернет-сервис помощи студентам
Добрый день, подскажите, пожалуйста, что конкретно происходит в этом цикле? Мне нужно из простого сдвига на n позиций влево сделать сдвиг одномерного массива на n позиций влево, начиная с определённого элемента. Но я слабо понимаю, что вообще происходит в цикле. Как можно подробнее объясните, если не затруднит

C++
1
2
3
4
5
6
7
for (int j = 0; j < k; j++) // k - количество позиций, на которых требуется сдвинуть массив
    {
        temp = arr[0];
        for (int i = 0; i < n - 1; i++) // n - размер массива
            arr[i] = arr[i + 1];
        arr[n - 1] = temp;
    }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.04.2020, 23:33
Ответы с готовыми решениями:

Выполнить сдвиг элементов массива влево на 1 ячейку, начиная с позиции максимального элемента массива
Дан массив действительных чисел размера n. Выполнить сдвиг элементов массива влево на 1 ячейку,...

Сдвиг элементов массива на n позиций влево
Здравствуйте! Уважаемые коллеги. Стал изучать массивы в с++ и столкнулся с трудностью сдвига. ...

Циклический сдвиг массива на k позиций влево
Помогите пожалуйста решить задание на Си. Элементы заданного массива циклически сдвинуть на k...

Осуществить сдвиг элементов массива влево на K позиций
Дан массив размера N и целое число K (1 ≤ K &lt; N). Осуществить сдвиг элементов массива влево на K...

1
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
20.04.2020, 04:36 2
Лучший ответ Сообщение было отмечено glyxar6 как решение

Решение

В цикле происходит циклический сдвиг элементов массива влево.
C++
1
2
3
4
5
6
7
    for (int j = 0; j < k; j++) // k - количество позиций, на которых требуется сдвинуть массив
    {
        temp = arr[0]; // запоминаем первый элемент массива во временной переменной чтобы он не потерялся
        for (int i = 0; i < n - 1; i++) // в цикле сдвигаем элементы массива на один шаг влево 
            arr[i] = arr[i + 1];        // arr[0]-й принимает значение arr[1]-го, arr[1]-й - значение arr[2]-го и т.д.            
        arr[n - 1] = temp; // сохраненный ранее первый элемент переходит на место последнего (движение по кольцу)
    }
Для сдвига, начиная с определенного элемента, нужно ввести параметр m, обозначающий индекс этого элемента. С него и до конца массива будет осуществляться циклический сдвиг.

C++
1
2
3
4
5
6
7
    for (int j = 0; j < k; j++)
    {
        temp = arr[m];
        for (int i = m; i < n - 1; i++)
            arr[i] = arr[i + 1];      
        arr[n - 1] = temp;
    }
1
20.04.2020, 04:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2020, 04:36
Помогаю со студенческими работами здесь

Циклический сдвиг элементов массива влево на k позиций
Дан массив размера N и число k (0&lt;k&lt;5, k&lt;N) Осуществить циклический сдвиг элементов влево на k...

Циклический сдвиг элементов массива влево на P позиций
Помогите пожалуйста Осуществите сдвиги элементов в массиве так, чтобы выполнялось указанное...

Циклический сдвиг элементов массива влево на 8 позиций
Здравствуйте!!! Помогите пожалуйста решить задачу! Си... Надо осуществить циклический сдвиг...

Осуществить сдвиг элементов массива влево на K позиций
Array82. Дан массив размера N и целое число K (1 ≤ K &lt; N). Осуществить сдвиг элементов массива...

Осуществить сдвиг элементов массива влево на K позиций
Здравствуйте. За основу брал код многоуважаемого Puporev. Есть пара вопросов. program pr; uses...

Осуществить циклический сдвиг элементов массива влево на k позиций
Есть код на сдвиг в правую сторону, (т.е. изначальный массив: 1,2,3,4,5; k=3; Исходный массив:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru