Jeśli pisał byś to "produkcyjnie", to zapewne powinno wyglądać to tak:
#include <iostream>
#include <algorithm>
#include <numeric>
#include <cstddef>
#include <iterator>
using namespace std;
int main()
{
constexpr static size_t WYMIAR_TABLICY = 5;
float liczba[WYMIAR_TABLICY];
cout << "Podaj " << WYMIAR_TABLICY << " liczb oddzielonych spacja:\n";
copy_n(istream_iterator<float>(cin), WYMIAR_TABLICY, begin(liczba));
auto srednia = accumulate(begin(liczba), end(liczba), 0.0) / WYMIAR_TABLICY;
auto bliska = accumulate(begin(liczba) + 1, end(liczba), *begin(liczba), [&](const auto a, const auto b) {
return abs(srednia - a) < abs(srednia - b) ? a: b;
});
cout << "Srednia z tych liczb wynosi: " << srednia << '\n'
<< "Najblizsza sredniej jest liczba: " << bliska << '\n';
}
A co do uwag w Twoim kodzie:
1. Nie stosuj "wartości magicznych". W Twoim kodzie to wartość 5. W przypadku zmiany wymagania (np. więcej danych), będzie konieczność poprawy w wielu miejscach. Stąd lepiej zdefiniować stałą i jej używać.
2. Dziel kod na funkcje jeśli nie jest to pojedyncze wywołanie np. algorytmu. Poprawia to czytelność i informuje jakie masz intencje. Np. funkcja oblicz_srednia(...) już jest lepsza niż klepanie pętli w pojedynczym spagetti kodzie. Oczywiście lepiej używać angielskiego.
3. Nie stosuj zmiennych globalnych. To zła praktyka.
4. Nie nadużywaj std::endl. W większości wypadków, wystarcza tylko znak nowej linii '\n'.
5. W pętlach staraj się preferować pre inkrementację (++i) , ponad post inkrementację (i++).
6. Nazywaj poprawne zmienne. Np. srednia to na początku nie średnia a suma.