Циклически сдвинуть элементы массива на К разрядов вправо - C (СИ)
Формулировка задачи:
Помогите пожалуйста написать вот такую программку:
Ввести массив целых чисел длиной n (n < 30). Циклически сдвинуть элементы массива на К разрядов вправо, к нужно вводить с клавиатуры.
Решение задачи: «Циклически сдвинуть элементы массива на К разрядов вправо»
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");
- }
Объяснение кода листинга программы
- Программа включает в себя два стандартных заголовочных файла: iostream.h и stdlib.h.
- Функция reverse() выполняет инверсию элементов массива.
- В функции main() создается массив типа unsigned с размером N и заполняется значениями от 0 до N-1.
- Выводится содержимое массива.
- В первой части цикла элементы массива сдвигаются вправо на K позиций.
- Во второй части цикла выполняется обратный сдвиг элементов массива на N-K позиций.
- В третьей части цикла выполняется инверсия элементов массива.
- Выводится содержимое массива после выполнения всех операций.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д