Program wypisujący liczbę najbliżej średniej pięciu liczb

0

Próbowałem napisać program, który najpierw pyta o 5 liczb, potem wylicza średnią z tych liczb i na koniec wypisuje liczbę, która jest najbliżej tej średniej, ale coś nie działa:

 #include <iostream>
#include <cmath>

using namespace std;

int main()
{
    float a,b,c,d,e,m,k,srednia;
    cin >> a
        >> b
        >> c
        >> d
        >> e;
    srednia = (a + b + c + d + e / 5);

    cout << "Srednia tych liczb to: " << srednia << endl;

    k = fabs(a - srednia);
    m = a;
    if(fabs(b - srednia) < k)) {m = b; k = fabs(b - srednia);}
    if(fabs(c - srednia) < k)) {m = c; k = fabs(c - srednia);}
    if(fabs(d - srednia) < k)) {m = d; k = fabs(d - srednia);}
    if(fabs(e - srednia) < k)) {m = e; k = fabs(e - srednia);}

    cout << "Liczba najblizej sredniej to: " << m << endl;

    return 0;
}
2
srednia = (a + b + c + d + e) / 5;
0

Nadal mam taki błąd:

error: expected primary-expression before ')' token.
0

Za dużo nawiasów w ifach.

0

Błąd występuje w pierwszym ifie. Ale tam muszą być dwa nawiasy, jeden do ifa, a drugi do funkcji fabs.

2

Bład występuje w każdej linii gdzie masz if.
Gdybyś nauczył się czytać błędy kompilatora to rozwiązałbyś ten problem w 2 minuty.

Przy każdym ifie masz 2 nawiasy otwierające i 3 zamykające.
Jakbyś normalnie formatował kod to też pewnie byś to szybciej zobaczył.

0

Dobra juz działa, nie wiem jak tego mogłem nie zauważyć.

1

Zadbaj na przyszłość o czytelność kodu, wcięcia, wtedy łatwiej zauważysz takie rzeczy ;)

Porównaj:

if(fabs(b - srednia) < k)) {m = b; k = fabs(b - srednia);} 
 
if(fabs(b - srednia) < k) 
{
    m = b;
    k = fabs(b - srednia);
}
1

cpp.sh/2cd7

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;

int main(){
    vector<double> numbers = {1,2,3,4,5,7};
    auto average = accumulate(begin(numbers), end(numbers), 0.0) / numbers.size();
    sort(begin(numbers), end(numbers), [average](double a, double b){ return fabs(a-average)<fabs(b-average); });
    cout << "Average: " << average << endl;
    for(auto number : numbers)
        cout << number << " ";
    return 0;
}

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