Осуществить циклический сдвиг элементов массива влево на 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;
}

Объяснение кода листинга программы

В данном коде реализованы две функции:

  1. Функция LeftOffset осуществляет циклический сдвиг элементов массива влево на M позиций. Перебирает массив от 1-го до M-1-го элемента и меняет их местами с элементами, идущими после них. Последний элемент массива остается на своем месте. Если M равно 0, то функция возвращает исходный массив. Формат вызова функции: LeftOffset(array, size, offset), где:
    • array - указатель на начало массива;
    • size - размер массива;
    • offset - смещение.
  2. Функция Print выводит элементы массива на экран через запятую. Формат вызова функции: Print(array, size), где:
    • array - указатель на начало массива;
    • size - размер массива. В функции main создается массив array размером 10 и заполняется значениями от 1 до 10. Затем вызывается функция LeftOffset, которая осуществляет циклический сдвиг элементов массива влево на 5 позиций. После чего вызывается функция Print, которая выводит элементы массива на экран. В результате выполнения программы на экран будет выведен массив [10, 5, 4, 3, 2, 1, 6, 7, 8, 9].

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы