Переписать в обратном порядке элементы вещественного массива, расположенные между минимумом и максимумом - 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;
- }
Объяснение кода листинга программы
В этом коде:
- Объявлен массив arr типа int размерностью SIZE, и инициализированы начальные значения переменных min и max равными первому элементу массива.
- Заполняется массив arr случайными числами от 1 до 99 с помощью функции rand().
- Находятся индексы минимального и максимального элементов массива с помощью цикла for и сравнениями.
- Выводится на экран индексы минимального и максимального элементов.
- Создаются указатели на минимальный и максимальный элементы.
- Если индекс максимального элемента больше индекса минимального элемента, то производится перестановка элементов в обратном порядке с помощью цикла for и временной переменной temp_element.
- Если индекс минимального элемента больше индекса максимального элемента, то производится перестановка элементов в обратном порядке с помощью цикла for и временной переменной temp_element.
- Если индекс минимального и максимального элементов одинаковый, то выводится сообщение об ошибке и программа завершается.
- Выводится на экран обновленный массив arr.
- Программа ожидает нажатия клавиши с помощью функции system(
\npause
). - Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д