PROGRAM 9
PROGRAM BSORT C.....THIS PROGRAM PERFORMS A BUBBLE SORT ON A GROUP OF TEST SCORES, COUNTS C.....THE NUMBER OF PASSING AND NON-PASSING STUDENTS, AND CALCULATES THE C.....AVERAGE AND MEDIAN SCORES. C.....F012 ANTHONY F. ORTIZ **P70** C.....DECLARE A ONE-DIMENSIONAL ARRAY FOR THE GROUP OF TEST SCORES. C.....DECLARE VARIABLES FOR AVG, MEDIAN, PASSING AND NON-PASSGING SCORES. DIMENSION INT (25) INTEGER PASS, NPASS, COUNT, MAX, SFLAG, SWAP REAL AVG, MEDIAN C.....OPEN THE DATA FILE 'F012P70.DAT' AND THE OUT FILE 'F012P70.OUT'. OPEN (1, FILE = 'F012P70.DAT') OPEN (2, FILE = 'F012P70.OUT') C.....WRITE THE HEADER, TITLE, AND COLUMN HEADINGS TO THE OUT FILE. WRITE (2, *) 'F012 ANTHONY F. ORTIZ **P70**' WRITE (2, *) WRITE (2, *) ' UNSORTED TEST SCORES ' WRITE (2, *) WRITE (2, *) ' COUNT SCORE ' WRITE (2, *) C.....PUT THE TEST SCORES IN A ONE-DIMENSIONAL ARRAY. READ (1, 100) (INT (COUNT), COUNT = 1, 25) 100 FORMAT (13I3, /, 12I3) C.....WRITE THE UNSORTED GROUP OF TEST SCORES TO THE OUT FILE. DO 10 COUNT = 1, 25 WRITE (2, 200) COUNT, INT (COUNT) 200 FORMAT (3X, I14, I16) 10 CONTINUE C.....REARRANGE THE TEST SCORES FROM LOWEST TO HIGHEST USING A BUBBLE SORT. MAX = 25 - 1 SFLAG = 0 20 IF (SFLAG.EQ.1) THEN GOTO 40 ENDIF SFLAG = 1 DO 30 COUNT = 1, MAX IF (INT (COUNT).GT.INT (COUNT + 1)) THEN SWAP = INT (COUNT + 1) INT (COUNT+ 1) = INT (COUNT) INT (COUNT) = SWAP SFLAG = 0 ENDIF 30 CONTINUE GOTO 20 40 WRITE (2, *) C.....WRITE THE SORTED TEST SCORES TO THE OUT FILE. WRITE (2, *) ' SORTED TEST SCORES' WRITE (2, *) WRITE (2, *) ' COUNT SCORE' WRITE (2, *) DO 50 COUNT = 1, 25 WRITE (2, 300) COUNT, INT (COUNT) 300 FORMAT (3X, I14, I16) 50 CONTINUE C.....COUNT THE PASSING AND NON-PASSING SCORES AND CALCULATE THE AVERAGE AND C.....MEDIAN SCORES. PASS = 0 NPASS = 0 TOTAL = 0 DO 60 COUNT = 1, 25 IF (INT (COUNT).LT.65) THEN NPASS = NPASS + 1 ELSE PASS = PASS + 1 ENDIF TOTAL = TOTAL + INT (COUNT) 60 CONTINUE AVG = TOTAL / (PASS + NPASS) IF (MOD (25, 2).EQ.0) THEN COUNT = 25 / 2 MEDIAN = (INT (COUNT) + INT (COUNT + 1)) / 2 ELSE COUNT = 25 / 2 + 1 MEDIAN = INT (COUNT) ENDIF C.....WRITE THE PASSING AND NON-PASSING NUMBER OF SCORES AND THE AVERAGE AND C.....MEDIAN. WRITE (2, *) WRITE (2, *) 'PASSING NOT PASSING AVERAGE MEDIAN' WRITE (2, *) WRITE (2, 400) PASS, NPASS, AVG, MEDIAN 400 FORMAT (I6, I14, 3X, F14.2, F13.2) C.....END THE PROGRAM. STOP END C.....DATA FILE: F012P70.DAT 72 85100 98 76100 99 73 74 65 54 93 85 70 86 87 89 72 90 63 79 78 91 88 75 C.....OUTFILE: F012P70.OUT F012 ANTHONY F. ORTIZ **P70** UNSORTED TEST SCORES COUNT SCORE 1 72 2 85 3 100 4 98 5 76 6 100 7 99 8 73 9 74 10 65 11 54 12 93 13 85 14 70 15 86 16 87 17 89 18 72 19 90 20 63 21 79 22 78 23 91 24 88 25 75 SORTED TEST SCORES COUNT SCORE 1 54 2 63 3 65 4 70 5 72 6 72 7 73 8 74 9 75 10 76 11 78 12 79 13 85 14 85 15 86 16 87 17 88 18 89 19 90 20 91 21 93 22 98 23 99 24 100 25 100 PASSING NOT PASSING AVERAGE MEDIAN 23 2 81.68 85.00
BACK TO COMP150 PAGE.