Untitled
unknown
plain_text
2 years ago
1.5 kB
6
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