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

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

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

Осуществить сдвиг вправо на k позиций, где k-число элементов, расположенных между его минимальным и максимальным элементами

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #define N 10
  4.  
  5. int IndexMin (int *mas)
  6. {
  7.     int i;
  8.     int min = 0;
  9.     for (i=1; i<N; i++)
  10.         if (mas[i] < mas[min])
  11.             min = i;
  12.     return min;
  13. }
  14.  
  15. int IndexMax (int *mas)
  16. {
  17.     int i;
  18.     int max = 0;
  19.     for (i=1; i<N; i++)
  20.         if (mas[i] > mas[max])
  21.             max = i;
  22.     return max;
  23. }
  24.  
  25. void Shift (int *mas, int k)
  26. {
  27.     int i,j,tmp;
  28.     for (i=1; i<=k; i++)
  29.     {
  30.         tmp = mas[N-1];
  31.         for (j=N-1; j>0; j--)
  32.             mas[j] = mas[j-1];
  33.         mas[0] = tmp;
  34.     }
  35. }
  36.  
  37. int main()
  38. {
  39.     int a[N]={0};
  40.     int i;
  41.     for (i=0; i<N; i++)
  42.     {
  43.         printf ("A[%d] = ",i);
  44.         scanf ("%d",&a[i]);
  45.     }
  46.     Shift (a,abs(IndexMax(a)-IndexMin(a)-1));
  47.     for (i=0; i<N; i++)
  48.         printf ("%d ",a[i]);
  49.     printf ("\n");
  50.     return 0;
  51. }

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

  1. Включаем необходимые заголовочные файлы для работы с I/O и математическими операциями
  2. Определяем размер массива N, в данном случае равный 10
  3. Создаем функцию IndexMin, которая находит индекс минимального элемента в массиве
  4. Создаем функцию IndexMax, которая находит индекс максимального элемента в массиве
  5. Создаем функцию Shift, которая осуществляет сдвиг массива вправо на k позиций
  6. В функции main создаем массив a размером N и заполняем его значениями с помощью scanf
  7. Вызываем функцию Shift, передавая ей массив a и значение k, которое вычисляется как abs(IndexMax(a)-IndexMin(a)-1)
  8. Выводим значения массива a после сдвига на экран с помощью printf
  9. Возвращаем 0, чтобы указать, что программа успешно завершилась

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


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

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

6   голосов , оценка 4.333 из 5

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

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

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