Найти в массиве минимальный элемент не используя условный оператор if - C (СИ)
Формулировка задачи:
Помогите пожалуйста! Задача такова: Найти в массиве минимальный элемент не используя условный оператор if. Насколько я сам понял нужно решить таким способом.
Проблема в функции. Она только сравнивает последние 2 числа в массиве. Долбился целый час но так и не смог преобразовать алгоритм решения.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int i;
int MinElement(int m[20])
{
int min;
for(i=0; i<19; i++)
min = (m[i] < m[i+1]?m[i]:m[i+1]);
return(min);
}
void main(void)
{
int MyArray[20];
srand(time(NULL));
clrscr();
for(i=0; i<20; i++)
MyArray[i] = 1+random(100);
printf("Array:");
for(i=0; i<20; i++)
printf(" %d",MyArray[i]);
puts("");
printf("Min. Element of Array = %d",MinElement(MyArray));
getch();
}Решение задачи: «Найти в массиве минимальный элемент не используя условный оператор if»
textual
Листинг программы
int MinElement(int m[20])
{
int min = m[0];
for(i=0; i<20; i++)
min = (min > m[i] ? m[i] : min);
return(min);
}
Объяснение кода листинга программы
- Входной параметр функции - массив m типа int, длиной 20 элементов.
- Переменная min инициализируется значением первого элемента массива m.
- В цикле for перебираются все элементы массива m, начиная с индекса 0 и до 19.
- В каждой итерации цикла сравнивается текущее значение min с текущим элементом массива m.
- Если текущее значение min больше текущего элемента массива m, то min присваивается значение текущего элемента массива m.
- Если текущее значение min меньше или равно текущему элементу массива m, то min остается неизменным.
- По завершении цикла for, функция возвращает значение переменной min.
- Возвращаемое значение функции - минимальный элемент массива m.