Problem z programem, wielka prośba o pomoc, wyszukiwanie odpowiednich liczb

0

Cześć, jestem poczatkujący, zdecydowałem się założyc konto i Od razu kieruje do was prośbe o pomoc. Mając zadanie w którym program po podaniu 5 liczb przez uzytkownika ma podac liczbe zblizona najblizej do sredniej z tych 5 liczb. Pierwsze wrazenie jest takie ze program, który stworzyłem działa ale jeśli tylko 2 liczby beda w takiej samej odleglosci od siebie powinny byc wyswietlone dwie a jednak tak sie nie dzieje(np liczby: 6.5; 3.5; 0; 15 ;0; tutaj powinny wyswietlic sie liczby 6.5 i 3.5) . Kompletnie nie wiem jak na to zaradzic, może ktos ma jakis pomysl?
ponizej program jaki stworzyłem

#include <iostream>
#include <windows.h>
#include <math.h>

using namespace std;

float srednia(float podaneCyfry[], int rozmiar)
{
    float suma=0;
    float srednia;
    for (int i=0; i<rozmiar; i++)
    {
        suma+=podaneCyfry[i];

    }
    srednia = suma/rozmiar;
    return srednia;
}

float najblizszaLiczba( float podaneCyfry[], float srednia, int rozmiar)
{
    float najblizszaLiczba;
    float roznica=fabs(podaneCyfry[0]-srednia);    
    for (int i=0; i<rozmiar; i++)
    {
        if(fabs(podaneCyfry[i]-srednia)<=roznica) najblizszaLiczba=podaneCyfry[i], roznica=fabs(podaneCyfry[i]-srednia);
    }
    return najblizszaLiczba;
}

int main()
{
    float podaneCyfry[5];
    for (int i=0; i<5; i++)
    {
        system("cls");
        cout << "podaj "<< i+1 <<" liczbe"<< endl;
        cin >> podaneCyfry[i];
    }

    cout << "Srednia podanych liczb to: "<< srednia(podaneCyfry, 5)<<endl;
    cout << "Najblizej sredniej z podanych liczb jest liczba: " << najblizszaLiczba(podaneCyfry, srednia(podaneCyfry,5),5);
}
0

Zwracasz tylko jedną wartość i wypisujesz ją. Nie szukasz kolejnej najbliższej.
Porównanie liczby zmiennoprzecinkowych operatorami == i != nie daje dokładnych wyników (niedokładność reprezentacji liczb zmiennoprzecinkowych).

0

Tak jak napisał carlosmay, a poza tym, co to znaczy, że dwie liczby są w takiej samej odległości od siebie(?!?)

0
lion137 napisał(a):

Tak jak napisał carlosmay, a poza tym, co to znaczy, że dwie liczby są w takiej samej odległości od siebie(?!?)

Oczywiscie chodzilo mi tak jak w zadaniu zadane czyli zeby program zaznaczal liczbe, ktora jest najblizej sredniej z podanych liczb, i tym pzykladzie co pisalem u gory, dwie liczby naraz są najblizej sredniej zestawu.

0

Funkcja najblizszaLiczba powinna sprawdzić czy tylko jedna, czy dwie liczby spełniają warunek zadania,
następnie zwrócić parę wartości (lub jedną). Jest na to wiele sposobów.
Np: std::pair
std::vector
Struct

1 użytkowników online, w tym zalogowanych: 0, gości: 1