Wykorzystanie if jest tu nawet niepotrzebne. Zgodnie z [link] funkcja min() zawiera w sobie dokładnie takie warunki i jest bardziej przejrzysta.
najblizsza=min(abs(srednia-a),abs(srednia-b));
najbliższa=min(najbliższa,abs(srednia-c));
najbliższa=min(najbliższa,abs(srednia-d));
najbliższa=min(najbliższa,abs(srednia-e));
lub krócej, choć mniej czytelnie (kolega by mi powiedział, że za****by mnie szpadlem za taki kod):
najblizsza=min(min(min(min(abs(srednia-a),abs(srednia-b)),abs(srednia-c)),abs(srednia-d)),abs(srednia-e));
a linię dalej:
if (a-najblizsza||a+najblizsza==srednia) najblizsza=a;
else if (b-najblizsza==srednia||b+najblizsza==srednia) najblizsza=b;
else if (c-najblizsza==srednia||c+najblizsza==srednia) najblizsza=c;
else if (d-najblizsza==srednia||d+najblizsza==srednia) najblizsza=d;
else if (e-najblizsza==srednia||e+najblizsza==srednia) najblizsza=e;
Poprawiam z racji tego, że sam zapędziłem się w ten sam błąd na który zwróciłem w jednym z poniższych komentarzy uwagę.