Циклический сдвиг элементов массива влево на 8 позиций - C (СИ)
Формулировка задачи:
Здравствуйте!!! Помогите пожалуйста решить задачу! Си...
Надо осуществить циклический сдвиг элементов массива влево на 8 позиций !!!
Заранее спасибо.
Решение задачи: «Циклический сдвиг элементов массива влево на 8 позиций»
textual
Листинг программы
#include "stdio.h"
/* Вращение массива Arr из n элементов влево m раз */
void lrot (int* Arr, int n, int m)
{
int tmp,i,j;
for (j=1; j<=m; j++)
{
tmp=Arr[n-1];
for (i=n-1; i>=1; i--) Arr[i]=Arr[i-1];
Arr[0]=tmp;
}
}
int main(int argc, char* argv[])
{
int Arr[]={1,2,3,4,5,6,7,8,9,10,11};
int i;
printf("Initial array:\n");
for (i=0; i<=10; i++) printf("%d ",Arr[i]);
printf("\n");
lrot(Arr,11,8);
printf("Array after rotating:\n");
for (i=0; i<=10; i++) printf("%d ",Arr[i]);
printf("\n");
return 0;
}
Объяснение кода листинга программы
В данном коде реализован алгоритм циклического сдвига элементов массива влево на 8 позиций. Алгоритм работает следующим образом:
- В функции
lrotобъявлены три переменные:tmp(временная переменная),iиj(для работы в циклах). Значениеn- размер массива, передается в функцию из аргумента. - Внешний цикл
forвыполняетсяmраз, гдеm- количество сдвигов. - На каждой итерации внешнего цикла во временную переменную
tmpкопируется последний элемент массиваArr. - Внутренний цикл
forслужит для сдвига элементов массива влево на одну позицию. Он выполняется отn-1до 1. - На каждой итерации внутреннего цикла элемент
Arr[i-1]заменяет элементArr[i]. - После завершения внутреннего цикла, в
Arr[0]записывается значениеtmp, которое было сохранено во временной переменной. - После завершения внешнего цикла, массив выводится на экран.
В функции
mainопределен массивArrразмером 11 элементов и инициализирован значениями от 1 до 11. - С помощью цикла
forи функцииprintfэлементы массива выводятся на экран. - Затем вызывается функция
lrot, передавая в нее массивArrи два аргумента:nиm. Значениеnиспользуется как размер массива, аmопределяет количество сдвигов. - После выполнения функции
lrot, массив выводится на экран снова.