Pomoc z przybliżeniem liczb.

0

Hej.Wiem,że ten kod jest nie do końca poprawny,więc proszę o pomoc chodzi mi o obliczenie średniej a następnie z podanych przez użytkownika liczb wyświetlenie tej która jest najbliżej średniej.Sam napisałem coś takiego

 
#include <iostream>
#include <cstdio>

using namespace std;
float a,b,c,d,e;
float srednia;
void sprawdzanie ()
{
    if (srednia>=a) cout<<"Najblizsza liczba to: "<<a;
     else if (srednia>=b) cout<<"Najblizsza liczba to: "<<b;
     else if (srednia>=c) cout<<"Najblizsza liczba to: "<<c;
   else  if (srednia>=d) cout<<"Najblizsza liczba to: "<<d;
   else  if (srednia>=e) cout<<"Najblizsza liczba to: "<<e;
}
int main()
{
    cout << "Podaj 5 liczby odzielonych spacja: ";
    cin>>a>>b>>c>>d>>e;
    srednia=a+b+c+d+e/5;
    cout<<"Srednia wynosi:"<<srednia<<"\n";
    sprawdzanie();
    getchar();

    return 0;
}
0
  1. nie korzystaj ze zmiennych globalnych jeśli nie musisz. Tutaj nie musisz.
  2. jeśli będziesz miał zrobić program dla 1000 liczb to zrobisz 1000 zmiennych? Użyj tablic.
  3. srednia=a+b+c+d+e/5; jest równoznaczne z srednia=a+b+c+d+(e/5); Kłania się kolejność wykonywania działań
  4. Niepoprawnie szukasz liczby najbliższej średniej - potrzebujesz wartości bezwzględnej (std::abs)
0

A coś bardziej konkretnego w pomocy ? Bo takie ogólniki jakie mi wypisałeś to zbytnio nic z tego nie rozumiem.

0
  1. wczytaj n liczb
  2. oblicz średnią ⟶ s
  3. znajdź z tych n tą, która jest najbliżej s (pamiętaj, że 2.9 jest bliżej 3 niż 4)

Na razie tylko pierwsze wykonałeś.

0

Aktualny mój kod

#include <iostream>
#include <cstdio>
#include <complex>

using namespace std;

int main()
{
    float s;
    float a,b,c,d,e;
    cout << "Podaj 5 liczby odzielonych spacja: ";
    cin>>a>>b>>c>>d>>e;
    s=(a+b+c+d+e)/5;
    cout<<"Srednia wynosi: "<<s<<"\n";
    getchar();
    return 0;
}


I teraz gdy podam jakąś liczbę zmiennoprzecinkową to program mi wyrzuca coś takiego 
 Średnia wynosi:nan 

I jak byś mi podał jakiś przykład użycia std::abs,ponieważ to co jest na internecie jest dla mnie wgl nie czytelne.
Dzięki!

0

https://pl.wikipedia.org/wiki/Warto%C5%9B%C4%87_bezwzgl%C4%99dna
http://en.cppreference.com/w/cpp/numeric/math/fabs

Kod wygląda ok (z tego co jestem w stanie zrozumieć przez błędne formatowanie), może dajesz zły input?

0

Z formatowaniem

 

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    float s;
    float a,b,c,d,e;
    cout << "Podaj 5 liczby odzielonych spacja: ";
    cin>>a>>b>>c>>d>>e;
    s=(a+b+c+d+e)/5;
    cout <<"Srednia wynosi: "<<s;
    getchar();
    return 0;
}



Cały czas jak dam liczbę zmiennoprzecinkową wywala mi "Średnia wynosi nan" ;//

0

Nie wiem czy aktualne ale:

  1. Zastosuj tablice
  2. Wykorzystaj pętlę for, pobierz liczby i dodaj je do jakiejś zmiennej, np. suma
  3. Podziel sumę przez długość tablicy

I w ten oto sposób będziesz miał średnią
Żeby uzyskać liczbę najbliższą, musiał byś zalozyc, ze różnica dla każdej liczby będzie różna, bo inaczej, 2 kilka liczb może być tak samo blisko, to też by się dalo rozwiązać zwracając tablicę dynamiczną, lub liczbami zapisanymi w tekscie

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