Dla osób które mają czas . Przepisałem kod wcześniejszy który poddałem krytyce na forum .Oto on proszę o konstruktywną krytykę osób które mają troche doświadczenia i wolnego czasu .
(Zadanie polega na wpisanu 5 Liczb do tablicy , obliczyć ich średnią i podać Liczby najbliżej średniej)
#include <iostream>
void menu();
float insertNumbers (float *pointer1, int x);
float doTheMath (float *pointer1, float *pointer2, int x, float average);
void checkAndPrintNumbers (float *pointer1, int x, float average, float smallestDistance);
int main()
{
float tab[5], subtraction[5], average, difference;
menu();
average = insertNumbers(tab, 5);
std::cout << "\n srednia = " << average << "\n\n";
difference = doTheMath(tab, subtraction, 5, average) ;
checkAndPrintNumbers(tab, 5 , average, difference);
return 0;
}
/**wyswietlMenu;*/
void menu()
{
std::cout << "----------------------------------------------------\n" ;
std::cout << "-- Zadanie : Znajdz Liczbe Najblisza Ich Sredniej --\n" ;
std::cout << "----------------------------------------------------\n\n";
}
/** wprowadzLiczbyDoTablicyZaPomocaWskaznikaiZwrocSrednia;*/
float insertNumbers (float *pointer1, int x)
{
float average=0;
for (int i = 0; i < x; i++) {
std::cout <<" Wprowadz " << i+1 << " Liczbe : ";
std::cin >> *pointer1;
average += *pointer1;
pointer1++;
}
return average / x;
}
/**przekazOryginalTablicJednaWykorzystajDoObliczenDoDrugiejDokonajZapisu*/
/**iZwrocNajmniejszaWartoscRoznicyDoSredniej*/
float doTheMath (float *pointer1, float *pointer2, int x, float average)
{
float theSmallestDifference;
for (int i = 0; i < x; i++) {
*pointer2 = average - *pointer1;
if (*pointer2 < 0) *pointer2 *= (-1);
if (i == 0) theSmallestDifference = *pointer2;
else if (theSmallestDifference > *pointer2) {
theSmallestDifference = *pointer2;
}
pointer1++;
pointer2++;
}
return theSmallestDifference;
}
/** koncowaFazaSprawdzajacaRozniceWzgledemSredniejDoJejLiczbSkladowychFiuuu*/
void checkAndPrintNumbers (float *pointer1, int x, float average, float smallestDistance)
{
float check;
int counter = 1;
for (int i = 0; i < x; i++) {
if ((*pointer1 + smallestDistance == average)||(*pointer1 - smallestDistance == average)) {
if (counter == 1) {
std::cout<<" Liczba najblisza sredniej to " << *pointer1;
check = *pointer1;
counter++;
}
if ((counter > 1)&&(check != *pointer1)) std::cout << " i " << *pointer1;
}
pointer1++;
}
std::cin.get();
std::cin.get();
}