Untitled
unknown
plain_text
a year ago
1.5 kB
4
Indexable
#include <stdio.h> // Функция для циклического сдвига массива void rotateArray(int A[], int n, int c) { if (c == 0) return; // Нет сдвига, если c равно 0 int actualShift = c % n; // Для больших c уменьшаем до размера n if (actualShift < 0) { // Преобразуем сдвиг вправо в сдвиг влево actualShift += n; } int temp; for (int i = 0; i < actualShift; i++) { temp = A[0]; for (int j = 0; j < n - 1; j++) { A[j] = A[j + 1]; } A[n - 1] = temp; } } // Функция для вывода элементов массива void printArray(int A[], int size) { for (int i = 0; i < size; i++) { printf("%d ", A[i]); } printf("\n"); } int main() { int A[] = {1, 2, 3, 4, 5}; int n = sizeof(A)/sizeof(A[0]); int c; printf("Исходный массив: "); printArray(A, n); // Пример сдвига влево c = 2; rotateArray(A, n, c); printf("Массив после сдвига на %d влево: ", c); printArray(A, n); // Возврат массива к исходному состоянию rotateArray(A, n, -c); // Пример сдвига вправо c = -2; rotateArray(A, n, c); printf("Массив после сдвига на %d вправо: ", -c); printArray(A, n); return 0; }
Editor is loading...
Leave a Comment