Jest problem, ponieważ przypisujesz nie różnicę a liczbę wczytaną z klawiatury.
Jeżeli warunek się spełni ( a nie spełni się, ponieważ jest zła konstrukcja pkt.1) to przypisujesz nie różnicę, a liczbę ale o tym niżej. (pkt. 3)
1) Załóżmy, że wybieramy 1,2,3,4,5
n=fabs(r1); //różnica jest równa 2 => n=2
if (n<fabs(r2)) n=b; // 2<1 fałsz więc n=2 (n=r1)
if (n<fabs(r3)) n=c; // jw.
if (n<fabs(r4)) n=d; // jw.
if (n<fabs(r5)) n=e; // nadal n=2 więc 2<2 tutaj nadal nie spełnia więc na 1 ifie się zatrzymało (spełniłoby się dla <=)
Trochę o znaku:
2) Jaki ma być warunek? Jeżeli 'n' jest większe to wtedy 'n' powinien być tą liczbą dla której sprawdzamy warunek ( z tym, że nie do końca patrz pkt. 3)
if (n>fabs(r3)) n=b; //z założenia - n=r1 więc n=2, więc jeżeli(2>0) i to jest prawda więc teraz n będzie najmniejszy i przypiszemy mu wartość b
3) Kolejna sprawa,
jeżeli dla n przypiszesz wartość b czyli 3 to już to nie jest do końca dobry zamysł, ponieważ nie porównujesz średniej tylko liczbę ze średnią. Jeżeli już, to powinnaś zrobić np. if (n>fabs(r3)) n=r3;
Należałoby dodać jeszcze jedną zmienną która przechowa, która to jest wartość.
if (n>fabs(r2)) {u=b;n=r2;}
if (n>fabs(r3)) {u=c;n=r3;}
if (n>fabs(r4)) {u=d;n=r4;}
if (n>fabs(r5)) {u=e;n=r5;}
Koncepcja jak najbardziej słuszna, drobne błędy w wykonaniu. Jeżeli chodzi o ulepszenie - nie widzisz tutaj czynności powtarzalnych?
Starałem się wytłumaczyć jak najprościej ale czasami się nazbyt rozpiszę, więc daj znać czy jest to klarowne