Witam wszystkich!
Uczę się C++ z tutoriali Pana Mirosława Zelenta. Na koniec filmu 11 było zadanie domowe o następującej treści:
"Napisz program który wczyta od użytkownika pięć liczb z przecinkiem, po czym wypisze na ekranie tę liczbę, która ma wartość najbardziej zbliżoną do średniej z wszystkich pięciu liczb. Można też pokazać ile ta średnia wynosi."
Program napisałem tak żeby użytkownik mógł wczytać dowolną ilość liczb.
W tym miejscu proszę bardziej doświadczone osoby o krytykę czyli co można było zrobić lepiej. Z góry dziękuje za poświęcony czas.
Kod będę się starał ciągle ulepszać dlatego może być nieaktualny do starszych komentarzy:P.
#include <iostream>
#include <cmath>
using namespace std;
float average(float *arr, int how_many);
int how_many;
int main()
{
float calculated_average, close_calculated_average, special_close_calculated_average; //sometimes we have 2 numbers close to average, for example: average=4,
//close_calculated_average=2, special_close_calculated_average=6.
cout << "Z ilu liczb liczymy srednia?" << '\n';
cin >> how_many;
float *array_;
array_ = new float [how_many];
for (int i=0; i<how_many; i++)
{
cout << "Wprowadz " << i+1 << " liczbe: ";
cin >> *(array_+i);
}
calculated_average = average (array_, how_many);
close_calculated_average = *array_;
for (int i=0; i <=how_many; i++)
{
if ((fabs(calculated_average - close_calculated_average)) > (fabs(calculated_average - *array_)))
{
close_calculated_average = *array_;
}
if ((fabs(calculated_average - close_calculated_average))==(fabs(calculated_average - *array_)))
{
special_close_calculated_average = *array_;
}
array_++;
}
if (special_close_calculated_average!=close_calculated_average)
{
cout << '\n' << "Srednia= " << calculated_average << '\n';
cout << "Liczby najblizej sredniej to " << close_calculated_average << " i " << special_close_calculated_average;
}
else
{
cout << '\n' << "Srednia= " << calculated_average << '\n';
cout << "Liczba najblizej sredniej to " << close_calculated_average;
}
delete [] array_;
return 0;
}
float average(float *arr, int how_many)
{
float sum = 0;
for (int i=0; i<how_many; i++)
{
sum+=*arr;
arr++;
}
return sum/how_many;
}