Witam.
Odcinek już trochę ma więc przypominam o co chodziło.
Polecenie do zadania wyglądała tak:
Trzeba wprowadzić 5 liczb
Wyliczyć z nich średnią
Podać która z liczb jest najbliższa średniej
Mimo że było trzeba było zrobić program dla 5 liczb chciałem zrobić taki który można by łatwo edytować dla innej ilości liczb więc skorzystałem z tablic.
Stworzyłem cuś takiego.
#include <iostream>
using namespace std;
float l[5];
float r[5];
float srednia=0, sr, blis1, blis2=0;
int nr;
int main()
{
cout << "Wpisz 5 liczb oddzielonych spacja: ";
cin>>l[0]>>l[1]>>l[2]>>l[3]>>l[4];
for (int i=0; i<=4; i++)
{
srednia=srednia+l[i];
if(i==4)
srednia=srednia/(i+1);
}
cout<<"Srednia wynosi: "<<srednia<<endl;
for (int i=0; i<=4; i++)
{
r[i]=srednia-l[i];
if (r[i]<0) r[i]=-r[i];
}
sr=r[0];
blis1=l[0];
for (int i=1; i<=4; i++)
{
if (r[i]<sr)
{
sr=r[i];
blis1=l[i];
nr=i;
}
}
for (int i=0; i<=4; i++)
{
if ((r[i]==sr) && (nr!=i))
{
blis2=l[i];
}
}
if (blis2==0)
{
cout<<"Liczba najblizej sredniej wynosi: "<<blis1<<endl;
}
else
{
cout<<"Liczby najblizej sredniej wynosza: "<<blis1<<" i "<<blis2<<endl;
}
return 0;
}
Zamysł jest taki żeby policzyć różnicę danych liczb od średniej a potem sprawdzić którą różnica jest najmniejsza i tą liczbę wybrać.
Program dobrze liczby średnią i różnicę ale ostatnia pętla nie chce działać poprawnie.
Wykonuje ją teoretycznie tyle razy ile trzeba. To znaczy 4 razy dla pętli for i teoretycznie odpowiednią ilość razy dla pętli if (tak mi się wydaje przynajmniej) ale mimo że warunek jest spełniony to nie wprowadza nowych liczb do zmiennych sr i blis
Mam nadzieję że pomożecie rozwiązać mi mój problem
@Edit
Siedziałem ze 2-3 godziny poprawiając wszystko i zastanawiając się co nie działa i dopiero jak zadałem pytanie zdałem sobie sprawę że równania w programowaniu muszą mieć określoną kolejność. Kod poprawiony program działa :)
Więc proszę tylko co ewentualnie mogę poprawić żeby usprawnić działanie programu :)