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.