Witam
Po kilku godzinach spędzonym przed monitorem udało mi się w końcu uzyskać prawidłowe odpowiedzi każdego przypadku jakie podał Pan Mirosław w kursie. Kurs C++ (#11).
Do zadania dodatkowo założyłem sobie aby program wykonywał to z dowolnej ilości liczb. Prosiłbym o wskazówki dla osoby początkującej (to forum to dla mnie jedyny kontakt z osobami które znają się na rzeczy) nad czym popracować podczas pisania kodu, które praktyki są błędne itd. . Bardzo prosiłbym o krytykę.
Kod:
#include <iostream>
#include <cmath>
#include <windows.h>
using namespace std;
int main()
{
cout << "Ile liczb chcesz wprowadzic? Wpisz: ";
int ile_liczb; int *wile_liczb=&ile_liczb;
cin >> *wile_liczb;
float *tablica = new float[*wile_liczb];
float liczba; float *wliczba=&liczba;
float suma=0; float *wsuma=&suma;
int i=0;
for (i; i<*wile_liczb; i++)
{
cout << "Wprowadz " << (i+1) << ". liczbe: ";
cin >> *wliczba;
tablica[i]=*wliczba;
*wsuma+=*wliczba;
}
float srednia = (*wsuma)/(*wile_liczb); float *wsrednia=&srednia;
float *wyniki = new float[2];
float roznica=abs(srednia-tablica[0]); float *wroznica=&roznica;
wyniki[0]=tablica[0];
int flaga=0; int *wflaga=&flaga;
for (i=1; i<*wile_liczb; i++)
{
if ((abs(tablica[i]-*wsrednia))<*wroznica)
{
*wroznica=abs(tablica[i]-*wsrednia);
wyniki[0]=tablica[i];
}
}
for (i=0; i<*wile_liczb; i++)
{
if (((abs(tablica[i]-*wsrednia))==*wroznica) && (tablica[i] != wyniki[0]))
{
wyniki[1]=tablica[i];
*wflaga=1;
}
}
if (*wflaga==1)
{
cout << "Srednia to: " << *wsrednia << ", liczba najblizej sredniej to: " << wyniki[0] << " oraz: " << wyniki[1];
}
else
{
cout << "Srednia to: " << *wsrednia << ", liczba najblizej sredniej to: " << wyniki[0];
}
delete [] tablica, wyniki;
return 0;
}
Pytania które mi w tej chwili się nasuwają to:
1. Czy takie usilne wykorzystywanie wszędzie wskaźników jest dobre?
2. Jak zoptymalizować jeszcze kod? (czy np. napisanie funkcji dla działań matematycznych oraz wywoływanie ich podczas potrzeby byłoby słusznym krokiem w przód?)