Witam
w sieci znalazlem zadanie do napisania w języku c.
Napisac program, który czyta ciag liczb ze standardowego wejscia az do wystapienia
znaku konca pliku (kombinacja klawiszy Ctrl–D na klawiaturze), a nastepnie oblicza
srednia˛ arytmetyczna i odchylenie standardowe, po czym wyprowadza wyniki na
standardowe wyjscie. W pierwszej wersji programu, dane moga byc przechowywane w
jednowymiarowej tablicy liczb zmiennoprzecinkowych o ustalonym rozmiarze maksymalnym
(np. SIZE = 1000) zadeklarowanym jako stała całkowita.
Poniżej zamieszczam kod:
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define NMAX 1000
int main()
{
double TablicaWartosci[NMAX];
int i;
int LiczbaProb;
double c;
double SredniaArytmetyczna;
double Wariancja;
c=0.0;
i=0;
SredniaArytmetyczna=0;
Wariancja = 0.0;
while(scanf("%lf",&c)!=EOF)
{
TablicaWartosci[i]=c;
i++;
}
LiczbaProb = i;
--i;
while(i>=0)
{
SredniaArytmetyczna+=TablicaWartosci[i];
--i;
}
SredniaArytmetyczna = SredniaArytmetyczna/LiczbaProb;
printf("Srednia arytmetyczna podanych wartosci wynosi: %lf\n",SredniaArytmetyczna);
i = 0;
while(i<LiczbaProb)
{
Wariancja = Wariancja + pow((TablicaWartosci[i] - SredniaArytmetyczna),2.0);
i++;
}
Wariancja = Wariancja/LiczbaProb;
printf("Wariancja podanych warosci wynosi: %lf\n",Wariancja);
printf("Odchylenie standardowe wynosi: %lf\n",sqrt(Wariancja));
getch();
return 0;
}
Wydaje się, że program produkuje poprawne wyniki, ale mam pytanie odnośnie tego czy program jest prawidłowo napisany czy prawidłowe jest użycie funkcji scanf do testowania warunku pętli i czy program można by uprościc.