Kod obliczający z n liczb średnią i wypisujący najbliższa liczbę do średniej (z liczb podanych przez użytkownika)
Kod działa dla liczb od 1 do 8 . Następnie od 8 do 10 nie działa (myslałem, ze pokazuje na następny element tablicy który nie został do niczego przypisany czyli na jakis adres ). Ale od 10 znowu działa.
#include <iostream>
#include <cmath>
using namespace std;
float* wypelnianie_plus_srednia(int rozmiar,float& srednia)
{
float* tab = new float [rozmiar];
cout << "Teraz podaj liczby (po spacji) z ktorych chcesz srednia policzyc ";
float suma = 0 ;
for(int i = 0 ; i < rozmiar; i++)
{
cout << "\nLiczba nr." << i+1 << " : ";
cin >> tab[i];
suma = suma + tab[i];
}
srednia = suma / rozmiar;
cout << "\nSrednia z podanych liczb to : " << srednia ;
return tab;
}
int main()
{
int n;
cout << "Program obliczajacy srednia z n liczb oraz przedstawiajacy najblizsza liczbe" << endl;
cout << "Dla ilu liczb chcesz obliczyc srednia ? : ";
cin >> n;
float srednia;
float* wsk = &srednia;
float* tab=wypelnianie_plus_srednia(n,srednia);
float wart_bez[n];
for(int i = 0 ; i < n ; i++)
{
wart_bez[i]=fabs(tab[i]-srednia); //wartosc bezwzgledna
}
//delete[]tab;
// Znalezenie najblizszej liczby
float najblizsza;
float blizsza = 0;
for(int i = 0; i < n ; i++)
{
// cout << "\nwart_bez[i] = " << wart_bez[i];
if(blizsza>=wart_bez[i])
{
blizsza=wart_bez[i]; // na takim tez sie psulo blizsza=wart_bez[i+1];
//cout << "\nblizsza czyli tab[i+1] " << blizsza;
najblizsza=tab[i]; // na takim tez sie psulo najblizsza=tab[i+1];
}
}
cout << "\nNajblizsza liczba do sredniej jest : " << najblizsza;
return 0;
}