Осуществить циклический сдвиг элементов массива влево на M позиций - C (СИ)
Формулировка задачи:
Дан массив N. Осуществить циклический сдвиг элементов массива влево на M позиций. Новый массив заводить нельзя.
Решение задачи: «Осуществить циклический сдвиг элементов массива влево на M позиций»
textual
Листинг программы
- #include <stdio.h>
- //-----------------------------------------------------------------------------
- int* LeftOffset(int array[], size_t size, size_t offset)
- {
- if (offset == 0)
- {
- return array;
- }
- int buff = array[0];
- size_t i;
- for (i = 1; i < size; ++i)
- {
- array[i - 1] = array[i];
- }
- array[size - 1] = buff;
- LeftOffset(array, size, offset - 1);
- return array;
- }
- //-----------------------------------------------------------------------------
- void Print(const int array[], size_t size)
- {
- size_t i;
- for (i = 0; i < size; ++i)
- {
- printf("%d, ", array[i]);
- }
- printf("\b\b \n");
- }
- //-----------------------------------------------------------------------------
- int main()
- {
- int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
- LeftOffset(array, 10, 5);
- Print(array, 10);
- return 0;
- }
Объяснение кода листинга программы
В данном коде реализованы две функции:
- Функция
LeftOffset
осуществляет циклический сдвиг элементов массива влево наM
позиций. Перебирает массив от 1-го доM-1
-го элемента и меняет их местами с элементами, идущими после них. Последний элемент массива остается на своем месте. ЕслиM
равно 0, то функция возвращает исходный массив. Формат вызова функции:LeftOffset(array, size, offset)
, где:array
- указатель на начало массива;size
- размер массива;offset
- смещение.
- Функция
Print
выводит элементы массива на экран через запятую. Формат вызова функции:Print(array, size)
, где:array
- указатель на начало массива;size
- размер массива. В функцииmain
создается массивarray
размером 10 и заполняется значениями от 1 до 10. Затем вызывается функцияLeftOffset
, которая осуществляет циклический сдвиг элементов массива влево на 5 позиций. После чего вызывается функцияPrint
, которая выводит элементы массива на экран. В результате выполнения программы на экран будет выведен массив[10, 5, 4, 3, 2, 1, 6, 7, 8, 9]
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д