Untitled

mail@pastecode.io avatar
unknown
plain_text
16 days ago
1.5 kB
1
Indexable
Never
#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;
}
Leave a Comment