PROGRAM Grades(Input,Output);
{Written by Jason J Schwarz in Turbo Pascal v6.0.
Purpose : This program will display the total, number of passing
           grades (based on 70 as passing), number of grades,
           highest grade, lowest grade, and the average.}

USES CRT;

VAR
   NumbGrades, Count, Passing : INTEGER;
   Grade, Sum, Low, High : REAL;

PROCEDURE InputGrades;
BEGIN
     {$I-}
     REPEAT
           WRITELN(Output,'How many grades do you want have to enter?');
           READLN(Input,NumbGrades);
     UNTIL ((NumbGrades>0) AND (IOResult=0));{REPEAT}
     {$I+}
     FOR Count:=1 TO NumbGrades DO
     BEGIN
          {$I-}
          REPEAT
                WRITELN(Output,'Type in grade ',Count);
                READLN(Input,Grade);
          UNTIL ((-1<Grade) AND (IOResult=0));{REPEAT}
          {$I+}
          Sum:=Sum+Grade;
          IF Grade>High THEN High:=Grade;
          IF Grade<Low THEN Low:=Grade;
          IF Grade>60 THEN Passing:=Passing+1;
     END;{Count:=1 TO NumbGrades}
END;{InputGrades}

PROCEDURE Display;
BEGIN{Display}
     CLRSCR;
     GOTOXY(32,01);
     WRITELN(Output,'Grade Statistics');
     GOTOXY(01,04);
     WRITELN(Output,'The sum of the grades is ',Sum:2:2);
     WRITELN('The average of the grades is ',Sum/NumbGrades:2:2);
     WRITELN('The lowest grade is ',Low:2:2);
     WRITELN('The highest grade is ',High:2:2);
     WRITELN('The number of passing grades is ',Passing);
     GOTOXY(29,24);
     WRITE(Output,'Press <RETURN> to exit');
     READLN(Input);
END;{Display}

BEGIN{Grades}
     CLRSCR;
     Sum:=0;
     Low:=1000000000;
     High:=0;
     Passing:=0;
     GOTOXY(33,01);
     WRITELN(Output,'Grade Averager');
     GOTOXY(26,02);
     WRITELN(Output,'Written by Jason John Schwarz');
     GOTOXY(01,04);
     InputGrades;
     Display;
END.{Grades}
