Witam. Mam problem z ustaleniem funkcji by wyliczyć najbliższą liczbę średniej tak bym to pojął, mógł sobie wyobrazić. Jak wiadomo nie sposób jest przepisywać od kogoś bo to żadna nauka więc wykombinowałem ową funkcję w taki sposób.
#include <iostream> #include <cmath> #include <cstdio> #include <climits> #include <algorithm> using namespace std; float tb[5],a,b,c,d,e,x,srednia,najblizej; int main() { cout << "Podaj 5 liczb: "; cin >> a >> b >> c >> d >> e ; srednia = (a+b+c+d+e)/5.0; cout << "Srednia wynosi: "<< srednia << "\n" ; tb[0]=fabs(a-srednia); tb[1]=fabs(b-srednia); tb[2]=fabs(c-srednia); tb[3]=fabs(d-srednia); tb[4]=fabs(e-srednia); if (tb[0]<tb[1]&&tb[2]&&tb[3]&&tb[4]) x=a; if (tb[1]<tb[0]&&tb[2]&&tb[3]&&tb[4]) x=b; if (tb[2]<tb[0]&&tb[1]&&tb[3]&&tb[4]) x=c; if (tb[3]<tb[0]&&tb[1]&&tb[2]&&tb[4]) x=d; if (tb[4]<tb[0]&&tb[1]&&tb[2]&&tb[3]) x=e; cout << "Najblizej sredniej jest: "<< x << "\n"; cout << tb[0] << "\n"<< tb[1] << "\n"<< tb[2] << "\n"<< tb[3] << "\n"<< tb[4]; }
Mój problem zaczyna się przy if'ach. Po podaniu przykładowo liczb 2 3 5 8 12, program uznaje, że najbliższa średniej (6 w tym przypadku) jest liczba 8. Po zamianie kolejności liczb zawsze realizowany jest if nr 4. Może to być błąd programu czy też gdzieś ja go posiadam?
PS: Wiem, że póki co program wygląda brzydko ale moim głównym celem póki co jest zrobienie poprawnie tej funkcji, a dopiero potem zajmę się ulepszaniem i estetyką kodu.