Осуществить циклический сдвиг элементов массива влево на M позиций - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дан массив N. Осуществить циклический сдвиг элементов массива влево на M позиций. Новый массив заводить нельзя.

Решение задачи: «Осуществить циклический сдвиг элементов массива влево на M позиций»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. //-----------------------------------------------------------------------------
  4. int* LeftOffset(int array[], size_t size, size_t offset)
  5. {
  6.    if (offset == 0)
  7.    {
  8.       return array;
  9.    }
  10.  
  11.    int buff = array[0];
  12.    size_t i;
  13.    for (i = 1; i < size; ++i)
  14.    {
  15.       array[i - 1] = array[i];
  16.    }
  17.    array[size - 1] = buff;
  18.  
  19.    LeftOffset(array, size, offset - 1);
  20.  
  21.    return array;
  22. }
  23. //-----------------------------------------------------------------------------
  24. void Print(const int array[], size_t size)
  25. {
  26.    size_t i;
  27.    for (i = 0; i < size; ++i)
  28.    {
  29.       printf("%d, ", array[i]);
  30.    }
  31.    printf("\b\b \n");
  32. }
  33. //-----------------------------------------------------------------------------
  34.  
  35. int main()
  36. {
  37.    int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  38.  
  39.    LeftOffset(array, 10, 5);
  40.  
  41.    Print(array, 10);
  42.  
  43.    return 0;
  44. }

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

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы