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

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

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

Помогите решить пожалуйста задачи на си... Не могу получить зачет поймите люди!! Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента.

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

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
 
int main(void)
{
#define N 7
int Mas[N],i=0,k=0,Mas2[N],max,l;
 
for (i = 0; i < N; ++i)
    {
        printf("\nEnter <%d> number:",i+1);
        scanf("%d",&Mas[i]);
    }
max=Mas[0];
for (i = 1; i < N; ++i)
    {
        if(Mas[i]>max)
        {
            max=Mas[i];
            k=i;
        }
    }
printf("\n");
for(i=0;i<N;i++)
    {
        Mas2[i]=Mas[i];
        printf("%d ",Mas[i]);
    }
 
for (i = 0; i < k; i++)
    {
        Mas[i]=Mas2[i+N-k];
    }
 
for (i = k; i < N; i++)
    {
        Mas[i]=Mas2[i-k];
    }
 
 
printf("\n");
for(i=0;i<N;i++)
{
printf("%d ",Mas[i]);
}
 
 _getch();
 return 0;
}

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

В этом коде осуществляется циклический сдвиг элементов массива вправо на k позиций. Вот список действий, которые происходят в коде:

  1. Объявление переменных:
    • Mas[N] - массив, в который считываются числа;
    • i=0 - счётчик для цикла, в котором считываются числа;
    • k=0 - счётчик для определения, на сколько позиций нужно сдвинуть элементы;
    • Mas2[N] - вспомогательный массив, в который сохраняются элементы из Mas[i];
    • max - переменная для хранения максимального числа;
    • l - переменная для хранения индекса максимального числа.
  2. Заполнение массива Mas[i] числами с помощью цикла и функции scanf().
  3. Поиск максимального числа в массиве Mas[i] с помощью цикла и сравнения чисел. При нахождении большего числа оно сохраняется в max, а его индекс - в l.
  4. Вывод на экран текущего состояния массива Mas[i].
  5. Заполнение вспомогательного массива Mas2[i] элементами из Mas[i].
  6. Сдвиг элементов массива Mas[i] вправо на k позиций с помощью двух циклов:
    • Цикл for (i = 0; i < k; i++) сдвигает элементы, начиная с начала массива.
    • Цикл for (i = k; i < N; i++) сдвигает элементы, начиная с позиции, следующей за последним элементом.
  7. Вывод на экран нового состояния массива Mas[i].
  8. Завершение работы программы с помощью функции _getch() и return 0;.

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


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

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

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