Вот обобщенный метод. Функция min_element()
принимает массив int, размер массива и указатель на функцию сравнения. Предикат сравнения возвращает true , если первые значения меньше второго значения. Функция, которая только что вернула a < b
, нашла бы самый маленький элемент в массиве. Предикат сравнения pinouchon()
выполняет ваше сравнение близости .
#include <stdio.h>
#include <stdlib.h>
#define CONST 1200
int pinouchon(int a, int b)
{
return abs(a - CONST) < abs(b - CONST);
}
int min_element(const int *arr, int size, int(*pred)(int, int))
{
int i, found = arr[0];
for (i = 1; i < size; ++i)
{
if (pred(arr[i], found)) found = arr[i];
}
return found;
}
int main()
{
int values[3] = {900, 1050, 1400};
printf("%d\n", min_element(values, 3, pinouchon));
return 0;
}