W zasadzie to cały blok od 24-26 linijki jest błędny. Ty sprawdzasz tylko różnice między aktualną wartością a poprzednią, a powinieneś sprawdzać między aktualną a globalnie najmniejszą.
Trochę zmodyfikowałem ten kod:
#include <iostream>
using namespace std;
float a[5]; //WARTOSCI
float srednia; //SREDNIA
float odleglosc[5]; //ODLGELOSCI DANYCH LICZB OD SREDNIEJ
float najblizej; //LICZBA NAJBLIZEJ SREDNIEJ
int indeks;
int main() {
cout<<"Podaj 5 liczb oddzielonych spacja i zatwierdz enterem: ";
cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4];
srednia=(a[0]+a[1]+a[2]+a[3]+a[4])/5;
for (int i=0; i<5; i++) {
odleglosc[i]=a[i]-srednia;
if (odleglosc[i]<0) odleglosc[i]=odleglosc[i]*-1;
}
najblizej = odleglosc[0];
indeks = 0;
for (int i=1; i<5; i++) {
if (odleglosc[i] < najblizej) {
najblizej = odleglosc[i];
indeks = i;
}
}
cout<<"Srednia wynosi: "<<srednia<<endl;
cout<<"Najblizej jest: "<< a[indeks] <<endl;
return 0;
}