Cześć, przychodzę z zapytaniem stricte logicznym. Aktualnie oglądam serię podstaw C++ i utknąłem na zadaniu domowym z odcinka nr 11.
Polecenie:
Napisz program znajdujący liczbę najbliższą średniej z 5-ciu podanych liczb.
Mimo ubogiej wiedzy podszedłem do tematu ambitnie i chciałem aby to było jednak więcej niż 5 liczb oraz nie chciałem uciekać się do biblioteki cmath. Stąd też rozpisałem warunki na if'ach lecz gdzieś zrobiłem błąd logiczny lub być może w zapisie
#include <iostream>
using namespace std;
int main()
{
int x;
cout << "Podaj ilosc liczb: ";
cin >> x;
float liczby[x];
float suma = 0;
for(int i=0; i<x; ++i)
{
cout << "Podaj " << i+1 << " liczbe: ";
cin >> liczby[i];
suma+=liczby[i];
}
float srednia = suma/x;
float wynik;
float closest;
for(int i=0; i<x; ++i)
{
if(liczby[i]>=0 && srednia<0)
{
wynik=liczby[i]-srednia;
if(wynik<closest)
{
closest=liczby[i];
}
}
else if(liczby[i]>0 && srednia>=0)
{
if(liczby[i]>srednia)
{
wynik=liczby[i]-srednia;
if(wynik<closest)
{
closest=liczby[i];
}
}
}
else if(liczby[i]<0 && srednia<0)
{
if(liczby[i]>srednia)
{
wynik=liczby[i]-srednia;
if(wynik<closest)
{
closest=liczby[i];
}
}
}
else if(srednia>0 && liczby[i]>0)
{
if(srednia>liczby[i])
{
wynik=srednia-liczby[i];
if(wynik<closest)
{
closest=liczby[i];
}
}
}
else if(srednia>0 && liczby[i]<0)
{
wynik=srednia-liczby[i];
if(wynik<closest)
{
closest=liczby[i];
}
}
else if(srednia<0 && liczby[i]<0)
{
if(srednia>liczby[i])
{
wynik=srednia-liczby[i];
if(wynik<closest)
{
closest=liczby[i];
}
}
}
}
if(srednia==closest)
{
cout<<"Najblizsza liczba sredniej jest taka sama jak srednia, ktora wynosi: "<< srednia<<endl;
}
else
{
cout<<"Srednia wynosi: "<<srednia<<endl;
cout<<"Najblizsza sredniej jest liczba: "<<closest<<endl;
}
return 0;
}