Program ma wczytywać dowolną ilość liczb, z których wybierze najbliższą średniej z tych wszystkich. Algorytm wydaje mi się dobrze ułożony jednak coś jest nie tak, kiedy sprawdzam jego poprawność dla liczb:
-55; -44; -33; 22; 11. Proszę o jakąś sugestię co może zawodzić.
Algorytm:
- tworzy tablicę t[] z podanymi liczbami
- oblicza ich sumę oraz średnią
- tworzy tablicę tr[] zawierającą odległość każdego wyrazu od średniej
- wyraz z najbliższą odległością jest poszukiwanym wyrazem
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
int main()
{
unsigned int n=0;
float x, suma=0, srednia;
float t[10000];
float tr[10000]; //skrot od tablicaroznic
cout << "Ile liczb chcesz porownac? " << endl;
cin >> n;
cout<< "\nPodaj te liczby: "<<endl;
for(int i=0 ; i<n ; i++)
{
cin>>x;
t[i]=x;
}
cout<<"\n t[]= ";
for (int i=0; i<n; i++)
{
cout<<t[i]<<" ";
suma+=t[i];
}
srednia=suma/n;
cout<<"\nSuma tych liczb wynosi: "<<suma;
cout<<"\nSrednia tych liczb wynosi: "<<srednia;
for (int i=0; i<n; i++)
{
tr[i]=abs(srednia-t[i]);
if (tr[i]==0)
{
cout<<"\nLiczba najblizsza sredniej to: "<<t[i];
exit(1);
}
}
float najblizsza0=tr[0];
cout<<"\n tr[]= : ";
for(int i=0; i<n; i++)
{
if (tr[i]<najblizsza0) najblizsza0=t[i];
cout<<tr[i]<<" ";
}
cout<<"\nLiczba najblizsza sredniej to: "<<najblizsza0;
return 0;
}