Задать вопрос
VanGog101
@VanGog101

Как сделать циклический сдвиг массива на 4 вправо?

Вот код. Но он сдвигает только на один элемент вправо
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int main ()
{
const int n = 12;
int a[n] = {1,2,3,4,5,6,7,8,9,10,11,12};
int t;
t = a[n-1];
for (int i = n-2; i>=0; i--)
{
    a[i+1] = a[i];
}
a[0] = t;
for (int i = 0; i<n; i++)
{

 cout << a[i] << " ";
    
}

return 0;

}
  • Вопрос задан
  • 12909 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
Zoominger
@Zoominger
System Integrator
Суперидиотский метод:
for(int k=0; k<4; k++){
   int t;
   t = a[n-1];
   for (int i = n-2; i>=0; i--)
   {
       a[i+1] = a[i];
   }
   a[0] = t;
}
Ответ написан
@menkar3
std::rotate?
#include <algorithm>
...
int main()
{
    const int n = 12;
    int a[n] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
    rotate(a, &a[n] - 4, &a[n]);
    for (auto n : a)
    {
        cout << n << " ";
    }
    return 0;
}
Ответ написан
Комментировать
TheRonCronix
@TheRonCronix
Понимаю, что это учебное задание, но вообще не сдвигайте массив, сдвигайте индекс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы