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.