PROGRAM p2(Input,Output,Infile,Outfile); { Mel Simmons Program 2 } CONST MAXSCORE = 200; PAGESIZE = 60; VAR Test1, Test2, Final:Integer; Percent:Real; Outfile, Infile:Text; LineCt:Integer; FirstTime:Boolean; TotPercent, MinPercent, MaxPercent:Real; StuCt:Integer; PROCEDURE Initialize(VAR LineCt, StuCt:Integer; VAR FirstTime : Boolean; VAR TotPercent, MinPercent, MaxPercent:Real); BEGIN {Initialize} LineCt := PAGESIZE + 1; FirstTime := True; StuCt := 0; TotPercent := 0.0; MinPercent := 99999.0; MaxPercent := -9E20; END; {Initialize} PROCEDURE ProcessStu( Test1, Test2, Final:Integer; VAR StuCt:Integer; VAR Percent, TotPercent, MinPercent, Maxpercent:Real); BEGIN {ProcessStu} Percent := (Test1 + Test2 + Final) * 100 / MAXSCORE; StuCt := StuCt + 1; TotPercent := TotPercent + Percent; IF Percent > MaxPercent THEN MaxPercent := Percent; IF Percent < MinPercent THEN MinPercent := Percent; END; {ProcessStu} PROCEDURE PrintSummary(VAR F:Text; StuCt:Integer; TotPercent, MinPercent, MaxPercent:Real); VAR AvgPercent:Real; BEGIN {PrintSummary} IF StuCt > 0 THEN AvgPercent := TotPercent / StuCt ELSE AvgPercent := 0; Writeln(F); Writeln(F,'Number of Students: ', StuCt:1); Writeln(F,'Average Percent: ', AvgPercent:1:1); Writeln(F,'Minimum Percent: ', MinPercent:1:1); Writeln(F,'Maximum Percent: ', MaxPercent:1:1); END; {PrintSummary} BEGIN {P2} Assign(Infile, 'c:\scores.txt'); Reset(Infile); Assign(Outfile, 'c:\report.txt'); Rewrite(Outfile); Initialize(LineCt, StuCt, FirstTime, TotPercent, MinPercent, MaxPercent); While Not EOF(Infile) Do Begin IF LineCt >= PAGESIZE Then Begin IF FirstTime Then FirstTime := False Else Write(Outfile, chr(12)); Writeln(Outfile, 'Test Test'); Writeln(Outfile, ' 1 2 Final Percent'); Writeln(Outfile); LineCt := 3; End; Readln(Infile, Test1, Test2, Final); ProcessStu(Test1, Test2, Final, StuCt, Percent, TotPercent, MinPercent, MaxPercent); Write(Outfile, Test1:3, Test2:10, Final:10, Percent:10:1); IF Percent >= 60 THEN Writeln(Outfile, 'Pass':10) ELSE Writeln(Outfile, 'Fail':10); LineCt := LineCt + 1; End; PrintSummary(Output, StuCt, TotPercent, MinPercent, MaxPercent); PrintSummary(OutFile, StuCt, TotPercent, MinPercent, MaxPercent); Close(Outfile); Readln; END. {P2}