Поменять местами максимально положительный и минимально отрицательный элементы массива - C (СИ)
Формулировка задачи:
Помогите пожалуйста, надо поменять местами максимально положительный и минимально отрицательный элементы массива Т(14)
Решение задачи: «Поменять местами максимально положительный и минимально отрицательный элементы массива»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> int* max_positive(const int* ptr, size_t len) { size_t i = 0; int* retval = NULL; for (i = 0; i < len; i++) { if (retval == NULL && ptr[i] > 0) { retval = ptr + i; } else if (retval != NULL && ptr[i] > *retval) { retval = ptr + i; } } return retval; } int* min_negative(const int *ptr, size_t len) { size_t i = 0; int* retval = NULL; for (i = 0; i < len; i++) { if (retval == NULL && ptr[i] < 0) { retval = ptr + i; } else if (retval != NULL && ptr[i] < *retval) { retval = ptr + i; } } return retval; } void swap(int *ptr1, int* ptr2) { if (ptr1 != NULL && ptr2 != NULL) { int buf = *ptr1; *ptr1 = *ptr2; *ptr2 = buf; } } #define SIZE 14 int main() { int array[SIZE]; size_t i = 0; srand(time(NULL)); for (i = 0; i < SIZE; i++) { printf("%d ", array[i] = rand() % 21 - 10); } swap(max_positive(array, SIZE), min_negative(array, SIZE)); putchar('\n'); for (i = 0; i < SIZE; i++) { printf("%d ", array[i]); } putchar('\n'); return EXIT_SUCCESS; }
Объяснение кода листинга программы
В данном коде реализованы три функции:
- max_positive(const int* ptr, size_t len) - функция для поиска максимального положительного элемента в массиве. Работает следующим образом:
- инициализирует переменную
retval
какNULL
, которая будет хранить максимальный положительный элемент; - перебирает все элементы массива, начиная с первого;
- если
retval
равенNULL
, то текущий элемент больше 0 и становится новым значениемretval
; - если
retval
не равенNULL
, то текущий элемент сравнивается с текущим значениемretval
. Если текущий элемент больше значенияretval
, то он становится новым значениемretval
.; - по окончанию цикла возвращает
retval
.
- инициализирует переменную
- min_negative(const int *ptr, size_t len) - функция для поиска минимального отрицательного элемента в массиве. Работает аналогично функции
max_positive
, но с использованием знака<
вместо>
. - swap(int ptr1, int ptr2) - функция для обмена значений двух указателей. Если оба указателя не равны
NULL
, то происходит обмен значений между ними. В функцииmain
создается массивarray
размером 14, заполняемый случайными числами от -10 до 10 с шагом 1. Затем вызывается функцияmax_positive
, которая возвращает указатель на максимальный положительный элемент массива, и функцияmin_negative
, которая возвращает указатель на минимальный отрицательный элемент массива. После чего вызывается функцияswap
, которая меняет местами максимальный положительный и минимальный отрицательный элементы массива. И, наконец, выводится исходный массив и массив после обмена элементов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д