Witam :) . Wymyśliłem sobie taki programik jak w tytule, który po podaniu mu liczb do tablicy z palca wyciąga z tych liczb średnią. Następnie szuka najbliższej liczby do tej średniej z tych wcześniej podanych cyfr. Program musi uwzględniać liczby zmiennoprzecinkowe oraz ujemne. Napisałem wszystko poza ostatnim pkt tzn. odnajdywanie najbliższej do średniej. Gdy kombinuje z if'em i różnica pomiędzy kolejnymi cyframi a średnią zapętlam się hehe Doradźcie mi coś proszę o jakąś podpowiedz :)
Pokaż kod, to Ci powiemy gdzie masz błąd..
float najblizsza=tab[0];
for(int i=1;i<n;i++)
if(abs(srednia-najblizsza)>abs(srednia-tab[i])
najblizsza=tab[i];
szuka najbliższej liczby
Jak rozumiesz "najbliższa liczba"?
Jaka jest "najbliższa liczba" dla 10.50
, a jaka dla 120
?
Z ręki podaje do tablicy np 4,5,10,7 średnia z tego 6,5 najbliższa 6,5 z wcześniej podanych to 7 I t ma robić program .
Po prostu zaokrąglij liczbę?
Poza tym, jaka jest najbliższa liczba dla 10
?
przeczytaj mój wcześniejszy post dokładnie program ma wyszukać najbliższą do średniej z podanych przeze mnie wcześniej a najbliższa do średniej z podanych to 7.
Najprostsze rozwiązanie, napisane na podstawie mojego komentarza, o którym powiedziałeś "nie.."
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n,index=0;
cin>>n;
float *tab=new float[n];
float suma=0;
for(int i=0;i<n;i++){
cin>>tab[i];
suma+=tab[i];
}
suma = suma/n;
float ab = abs(tab[0]-suma);
for(int i=1;i<n;i++){
if(ab>abs(tab[i]-suma)){
ab = abs(tab[i]-suma);
index = i;
}
}
cout<<"index: "<<index<<"\nLicbza: "<<tab[index]<<"\nabs: "<<abs(tab[index]=suma)<<endl;
delete[]tab;
return 0;
}
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.