W tych ifach:
Sprawdzasz czy wartość bezwzg. z różnicy srednicy i kolejnych wartości podanych przez użytkownika, jest mniejsza niż m.
Twoim problemem jest to, że jako m, zapisujesz wartości wpisane przez użytkownika, a nie wartość tej różnicy.
Spróbuj zrobić to tak:
float m;
float wynik = a;
m = (abs(srednia - a));
if ((abs(srednia - b)) < m){
m=abs(srednia - b);
wynik = b;
}
if ((abs(srednia - c)) < m){
m=abs(srednia - c);
wynik = c;
}
if ((abs(srednia - d)) < m){
m=abs(srednia - d);
wynik = d;
}
if ((abs(srednia - e)) < m){
m=abs(srednia - e);
wynik = e;
}
Potem wyświetlasz po prostu wartość zmiennej wynik.
Oczywiście jest to bardzo brzydki kod, ponieważ powinieneś tutaj użyć pętli i tablic:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
const int size = 5; //Ile liczb ma wpisać użytkownik
float numbers[size]; //Tablica tych liczb
float average = 0; //Wartość średnia
for (int i = 0; i < size; i++) {
cin >> numbers[i];
average += numbers[i]; //Dodawanie kolejnych liczb do zminnej average
}
average /= size; //Podzielenie sumy liczb, przez ich ilość, żeby obliczyć średnią
std::cout << "Average: " << average << "\n\n";
float temp = std::numeric_limits<float>::max();
float result = 0;
for (int i = 0; i < size; i++) {
float value = std::abs(average - numbers[i]); //Do pomocniczej zmiennej value, wpisujemy wartość bezwzględną z kolejnych liczb podanych przez użytkownika, odjętych od średniej.
if (value < temp) { //Jeżeli wartośc ta, jest mniejsza niż poprzednia najmniejsza różnica to:
temp = value; //Ustawiamy tą różnicę do porównywania:
result = numbers[i]; //Zapisujemy tą liczbę, żeby można ją było później wyświetlić.
}
}
cout << "Najblizsza liczba sredniej to: " << result << '\n';
system("pause"); //Żeby się program zatrzymał (W code::blocks samo się to robi, jednak ja używam Visual Studio
return 0;
}