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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <time.h>
#include <Windows.h>
#define SIZE 20
// (rand() % (max + 1 - min)) + min
 
int main(int argc, char *argv[])
{
    srand(time(NULL));
    int arr[SIZE], min, max, i, max_pos = 0, min_pos = 0;
    int temp_element = 0;
 
    for (i = 0; i < SIZE; i++) {
        arr[i] = rand() % 99 + 1;
        printf("%2d ",arr[i]);
    }
    min = arr[0];
    max = arr[0];
    for (i = 0; i < SIZE; i++) {
        if (arr[i] < min) {
            min = arr[i];
            min_pos = i;
        }
        if (arr[i] > max) {
            max = arr[i];
            max_pos = i;
        }
    }
 
    printf("\nmin pos %d, max pos %d\n", min_pos, max_pos);
    int counter;
    int *ptr_min = &arr[min_pos];
    int *ptr_max = &arr[max_pos];
 
    if (max_pos > min_pos) {
        for (i = min_pos, counter = 0; i < max_pos-counter; i++, counter++)
        {
            temp_element = arr[i];
            arr[i] = arr[max_pos - counter];
            arr[max_pos - counter] = temp_element;
        }
    }
    else if (min_pos > max_pos) {
        for (i = max_pos, counter = 0; i < min_pos-counter; i++, counter++)
        {
            temp_element = arr[i];
            arr[i] = arr[min_pos - counter];
            arr[min_pos - counter] = temp_element;
        }
    }
    else {
        printf("Minimum and maximum elements have the same index. Cannot evaluate \n");
        return 0;
    }
    for (i = 0; i < SIZE; i++) {
        printf("%2d ", arr[i]);
    }
 
    system("\npause");
    return 0;
}

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

В этом коде:

  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
Похожие ответы