Переписать в обратном порядке элементы вещественного массива, расположенные между минимумом и максимумом - C (СИ)

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

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

2)Переписать в обратном порядке элементы вещественного массива, расположенные между минимумом и максимумом массива. Все элементы массива различны.

Решение задачи: «Переписать в обратном порядке элементы вещественного массива, расположенные между минимумом и максимумом»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <Windows.h>
  4. #define SIZE 20
  5. // (rand() % (max + 1 - min)) + min
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9.     srand(time(NULL));
  10.     int arr[SIZE], min, max, i, max_pos = 0, min_pos = 0;
  11.     int temp_element = 0;
  12.  
  13.     for (i = 0; i < SIZE; i++) {
  14.         arr[i] = rand() % 99 + 1;
  15.         printf("%2d ",arr[i]);
  16.     }
  17.     min = arr[0];
  18.     max = arr[0];
  19.     for (i = 0; i < SIZE; i++) {
  20.         if (arr[i] < min) {
  21.             min = arr[i];
  22.             min_pos = i;
  23.         }
  24.         if (arr[i] > max) {
  25.             max = arr[i];
  26.             max_pos = i;
  27.         }
  28.     }
  29.  
  30.     printf("\nmin pos %d, max pos %d\n", min_pos, max_pos);
  31.     int counter;
  32.     int *ptr_min = &arr[min_pos];
  33.     int *ptr_max = &arr[max_pos];
  34.  
  35.     if (max_pos > min_pos) {
  36.         for (i = min_pos, counter = 0; i < max_pos-counter; i++, counter++)
  37.         {
  38.             temp_element = arr[i];
  39.             arr[i] = arr[max_pos - counter];
  40.             arr[max_pos - counter] = temp_element;
  41.         }
  42.     }
  43.     else if (min_pos > max_pos) {
  44.         for (i = max_pos, counter = 0; i < min_pos-counter; i++, counter++)
  45.         {
  46.             temp_element = arr[i];
  47.             arr[i] = arr[min_pos - counter];
  48.             arr[min_pos - counter] = temp_element;
  49.         }
  50.     }
  51.     else {
  52.         printf("Minimum and maximum elements have the same index. Cannot evaluate \n");
  53.         return 0;
  54.     }
  55.     for (i = 0; i < SIZE; i++) {
  56.         printf("%2d ", arr[i]);
  57.     }
  58.  
  59.     system("\npause");
  60.     return 0;
  61. }

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

В этом коде:

  1. Объявлен массив arr типа int размерностью SIZE, и инициализированы начальные значения переменных min и max равными первому элементу массива.
  2. Заполняется массив arr случайными числами от 1 до 99 с помощью функции rand().
  3. Находятся индексы минимального и максимального элементов массива с помощью цикла for и сравнениями.
  4. Выводится на экран индексы минимального и максимального элементов.
  5. Создаются указатели на минимальный и максимальный элементы.
  6. Если индекс максимального элемента больше индекса минимального элемента, то производится перестановка элементов в обратном порядке с помощью цикла for и временной переменной temp_element.
  7. Если индекс минимального элемента больше индекса максимального элемента, то производится перестановка элементов в обратном порядке с помощью цикла for и временной переменной temp_element.
  8. Если индекс минимального и максимального элементов одинаковый, то выводится сообщение об ошибке и программа завершается.
  9. Выводится на экран обновленный массив arr.
  10. Программа ожидает нажатия клавиши с помощью функции system(\npause).
  11. Программа завершается.

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


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

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

12   голосов , оценка 4.083 из 5

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

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

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