Я получаю сообщение об ошибке, что в Min или Max объявлено несколько значений.
потому что вы определяете функции Min / Max с параметрами 3 , а в (2.0 * (float)Min(x, y)) / ((float)Max(x, (float)Min(y, z)));
вы даете только 2 аргументов.
Просто определите их с 2 параметрами, например
int Max (int x, int y)
{
return (y > x) ? y : x;
}
int Min(int x, int y)
{
return (y < x) ? y : x;
}
Нет никакого интереса иметь более 2 параметров, иначе почему только 3, а не 4 или 5 и т. Д.? Наличие двух параметров позволяет управлять всеми делами, просто помещая вызовы в качестве аргумента для другого
max(a1,a2 ... ,an)
является max(a1, max(a2, ... max(an-1, an))...)
и, конечно, то же самое для мин
Из этого я рекомендую вам проверить scanf("%d %d %d", &x, &y, &z);
возвращает 3, чтобы убедиться, что 3 правильных значения были введены