Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania
Viewing all articles
Browse latest Browse all 65225

Szukanie liczby najbliższej średniej

$
0
0

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. 


Viewing all articles
Browse latest Browse all 65225

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>