Циклически сдвинуть элементы массива на К разрядов вправо - C (СИ)

Формулировка задачи:

Помогите пожалуйста написать вот такую программку: Ввести массив целых чисел длиной n (n < 30). Циклически сдвинуть элементы массива на К разрядов вправо, к нужно вводить с клавиатуры.

Код к задаче: «Циклически сдвинуть элементы массива на К разрядов вправо - C (СИ)»

textual
#include <stdio.h>
#include <stdlib.h>
 
void reverse(unsigned a[], unsigned n)
{
  for (unsigned i = 0, j = n - 1; i < j; ++i, --j)
  {
    unsigned tmp = a[i];
    a[i] = a[j];
    a[j] = tmp;
  }
}
 
#define N 30u
#define K 5u
 
int main()
{
  unsigned a[N];
 
  for (unsigned i = 0; i < N; ++i)
    a[i] = i;
 
  for (unsigned i = 0; i < N; ++i)
    printf("%u ", a[i]);
  printf("\n");
 
  reverse(a, K);
  reverse(a + K, N - K);
  reverse(a, N);
 
  for (unsigned i = 0; i < N; ++i)
    printf("%u ", a[i]);
  printf("\n");
}

13   голосов, оценка 3.615 из 5


СОХРАНИТЬ ССЫЛКУ