home *** CD-ROM | disk | FTP | other *** search
- program ogorman;
- {$c-,m-,f-}
- type
- byte = 0..255;
-
- var
- statistics:array[1..1000] of real;
- xx,number:integer;
- stop:char;
-
- procedure clear_screen;
- begin
- write(chr(27),'[2J',chr(27),'[1;1H');
- end;
-
- procedure stat_average;
- var
- standard_deviation,max,min,average,sum:real;
- counter:integer;
- ii,i:byte;
- ch:char;
-
-
- procedure calc_variance;
- var
- i:byte;
- variance,xvariance:real;
-
- begin
- xvariance:=0.0;
- for i:= 1 to 1000 do
- if statistics[i] <> -1.0 then
- xvariance:=xvariance + sqr(statistics[i]-average);
- variance:=xvariance/(counter-1);
- standard_deviation:= sqrt(variance);
- end;
-
- begin
- clear_screen;
- writeln('STATISTICAL ANALYSIS FOR TEST ');
- writeln;
- writeln;
-
- sum:= 0.0;
- counter:= 0;
-
- max:= statistics[1]; {init max,min to first value}
- if statistics[1] = -1.0 then
- min:= -1.0 else min:= statistics[1];
-
- for ii:= 1 to 1000 do
- begin
- if statistics[ii] <> -1.0 then
- begin
- sum:= sum + statistics[ii];
- counter:= counter + 1;
- if statistics[ii] > max then
- max:= statistics[ii];
- if statistics[ii] < min then
- min:= statistics[ii];
- end;
- end;
- average:= sum/counter;
- if (average = 0.0) or (average = -1.0) then
- write('no average calculated ':18) else
- begin
- calc_variance;
- write(' average: ',average:7:1);
- write(' n = ',counter:4,' S.D.= ',standard_deviation:7:1);
- end;
-
- if max <> -1.0 then write(' max = ',max:7:1) else
- write(' no max ':7);
- if min <> -1.0 then write(' min = ',min:7:1) else
- write(' no min ':7);
- writeln;
-
- end;
-
-
- begin {MAIN PROGRAM}
-
-
- repeat
- clear_screen;
- for xx:= 1 to 1000 do statistics[xx]:=-1.0; {initialize array}
-
- writeln('At prompt, enter value. Enter a value of -1 to stop entering data ');
-
- xx:=0;
-
- repeat
- xx:=xx+1;
-
- repeat
- write(xx:2,' ---> ');
- read(statistics[xx]);
- until (statistics[xx] < 1000.0) and (statistics[xx] > -1.1);{check limits}
-
- until statistics[xx] = -1.0; {input values until = -1 ie done}
-
- stat_average;
-
- writeln;
- write('Do you have additional data to analyze? y/n ');
- read (stop)
- until (stop = 'n') or (stop = 'N');
- end.