Ostanie dwie instrukcje warunkowe if, else if się nakładają. Z pierwszej usuń znak = żeby było: if(m<0) .
Czy program ma zwracać dowolną liczbę najbliższą średniej czy liczbę najbliższą średniej z pośród wprowadzonych? Twój zwraca dowolną najbliższą liczbę.
Jeżeli chcesz żeby o była jedna z wpisanych wcześniej liczb to musisz odnosić się do tablicy liczby[]. Proponuję takie rozwiązanie (moje dodatki w kodzie oznaczyłem pogrubionym drukiem):
#include <iostream>
#include <cmath>
using namespace std;
float liczby[5];
float srednia;
float roznica[5];
float m;
float x;
float h;
int main()
{
cout << "Wpisz 5 liczb: ";
cin>>liczby[0]>>liczby[1]>>liczby[2]>>liczby[3]>>liczby[4];
srednia = (liczby[0]+liczby[1]+liczby[2]+liczby[3]+liczby[4])/5;
cout<<"Srednia: "<<srednia<<endl;
for(int i=0; i<=4; i++)
{
roznica[i] = liczby[i] - srednia;
//cout<<roznica[i]<<endl<<endl;
}
m = abs(roznica[0]);
x=liczby[0];
if(m>abs(roznica[1]))
{
m = abs(roznica[1]);
x=liczby[1];
}
if(m>abs(roznica[2]))
{
m = abs(roznica[2]);
x=liczby[2];
}
if(m>abs(roznica[3]))
{
m = abs(roznica[3]);
x=liczby[3];
}
if(m>abs(roznica[4]))
{
m = abs(roznica[4]);
x=liczby[4];
}
//if(m<0) x = (m + srednia)*(-1);
//else if(m>=0) x = m + abs(srednia);
cout<<"Najblizsza: "<<x;
return 0;
}