PROGRAM 10
PROGRAM ARRAY3D
C.....THIS PROGRAM CALCULATES THE ROW AND COL TOTALS OF THREE 2-DIMENSIONAL
C.....ARRAYS AND SORTS EACH OF THESE ARRAYS. THESE THREE ARRAYS ARE PART
C.....OF A LARGER 3-DIMENSIONAL ARRAY.
C.....F012 ANTHONY F. ORTIZ **P86**
C.....DECLARE VARIABLES FOR THE 3-DIMENSIONAL ARRAY, THE DO LOOP VARIABLES
C.....THE MAX ARRAY, THE MAX ROW, THE MAX COL, AND ALL VARIABLES NEED FOR
C.....THE SORTING.
INTEGER ARRAY (3, 10, 10), A, R, C, AMAX, RMAX, CMAX, COUNT
INTEGER RTOTAL (3, 10), CTOTAL (3, 10), SORT (3, 64), COUNT2
INTEGER SWAP, SFLAG, MAX
C.....OPEN OUT FILE 'F012P86.OUT'.
OPEN (1, FILE = 'F012P86.OUT')
C.....WRITE THE HEADER AND TITLE TO THE OUT FILE.
WRITE (1, *) 'F012 ANTHONY F. ORTIZ **P86**'
WRITE (1, *)
WRITE (1, *) ' SORTED AND UNSORTED ARRAYS'
WRITE (1, *)
C.....GENERATE THE INTEGERS FOR THE 3-DIMENIONAL ARRAY.
AMAX = 3
RMAX = 2
CMAX = 2
COUNT = 30
DO 10 A = 1, AMAX
RMAX = RMAX + 2
CMAX = CMAX + 2
DO 15 R = 1, RMAX, 2
DO 15 C = 1, CMAX
ARRAY (A, R, C) = (R - 1) * 10 + C
15 CONTINUE
DO 20 R = 2, RMAX, 2
DO 20 C = 1, CMAX
ARRAY (A, R, C) = (R - 1) * 10 + RMAX + 1 - C
20 CONTINUE
COUNT = COUNT + 10
DO 25 R = 1, RMAX
ARRAY (A, R, R) = COUNT + R
25 CONTINUE
COUNT = COUNT + 10
DO 30 C = 1, CMAX
ARRAY (A, CMAX + 1 - C, C) = COUNT + C
30 CONTINUE
C.....CALCULATE THE ROW AND COL TOTALS OF THE 3-DIMENSIONAL ARRAY.
C.....PLACE THE RESULTS IN A 2-DIMENSIONAL ARRAY.
DO 35 R = 1, RMAX
DO 35 C = 1, CMAX
RTOTAL (A, R) = RTOTAL (A, R) + ARRAY (A, R, C)
CTOTAL (A, C) = CTOTAL (A, C) + ARRAY (A, R, C)
35 CONTINUE
C.....WRITE THE UNSORTED 3-DIMENSIONAL ARRAY AND ITS ROW AND COL TOTALS
C.....TO THE OUT FILE.
WRITE (1, 100) ('COL ', C = 1, CMAX), 'TOTAL'
100 FORMAT (11X, 8A, A)
WRITE (1, 200) (C, C = 1, CMAX)
200 FORMAT (6X, 8I7)
WRITE (1, *)
DO 70 R = 1, RMAX
WRITE (1, 300) 'ROW', R, (ARRAY (A, R, C), C = 1,CMAX), RTOTAL(A,R)
300 FORMAT (1X, A, I2, 9I7)
70 CONTINUE
WRITE (1, *)
WRITE (1, 400) 'TOTAL', (CTOTAL (A, C), C = 1, CMAX)
400 FORMAT (1X, A, 8I7)
WRITE (1, *)
C.....PUT THE 3-DIMENSIONAL ARRAY INTO A 2-DIMENSIONAL ARRAY FOR EASY
C.....SORTING PURPOSES.
COUNT2 = 0
DO 40 R = 1, RMAX
DO 40 C = 1, CMAX
COUNT2 = COUNT2 + 1
SORT (A, COUNT2) = ARRAY (A, R, C)
40 CONTINUE
C.....SORT THE 2-DIMENSIONAL ARRAY.
MAX = RMAX * CMAX - 1
SFLAG = 0
45 IF (SFLAG.EQ.0) THEN
SFLAG = 1
ELSE
GOTO 50
ENDIF
DO 55 COUNT2 = 1, MAX
IF (SORT (A, COUNT2).GT.SORT (A, COUNT2 + 1)) THEN
SWAP = SORT (A, COUNT2)
SORT (A, COUNT2) = SORT (A, COUNT2 + 1)
SORT (A, COUNT2 + 1) = SWAP
SFLAG = 0
ENDIF
55 CONTINUE
GOTO 45
C.....PLACE THE SORTED 2-DIMENSIONAL ARRAY BACK INTO THE 3-DIMENSIONAL
C.....ARRAY.
50 COUNT2 = 0
DO 60 R = 1, RMAX
DO 60 C = 1, CMAX
COUNT2 = COUNT2 + 1
ARRAY (A, R, C) = SORT (A, COUNT2)
60 CONTINUE
C.....WRITE THE SORTED 3-DIMENSIONAL ARRAY TO THE OUT FILE.
WRITE (1, 100) ('COL ', C = 1, CMAX)
WRITE (1, 200) (C, C = 1, CMAX)
WRITE (1, *)
DO 80 R = 1, RMAX
WRITE (1, 300) 'ROW', R, (ARRAY (A, R, C), C = 1, CMAX)
80 CONTINUE
WRITE (1, *)
10 CONTINUE
STOP
END
C.....OUTFILE: F012P86.OUT
F012 ANTHONY F. ORTIZ **P86**
SORTED AND UNSORTED ARRAYS
COL COL COL COL TOTAL
1 2 3 4
ROW 1 41 2 3 54 100
ROW 2 14 42 53 11 120
ROW 3 21 52 43 24 140
ROW 4 51 33 32 44 160
TOTAL 127 129 131 133
COL COL COL COL
1 2 3 4
ROW 1 2 3 11 14
ROW 2 21 24 32 33
ROW 3 41 42 43 44
ROW 4 51 52 53 54
COL COL COL COL COL COL TOTAL
1 2 3 4 5 6
ROW 1 61 2 3 4 5 76 151
ROW 2 16 62 14 13 75 11 191
ROW 3 21 22 63 74 25 26 231
ROW 4 36 35 73 64 32 31 271
ROW 5 41 72 43 44 65 46 311
ROW 6 71 55 54 53 52 66 351
TOTAL 246 248 250 252 254 256
COL COL COL COL COL COL
1 2 3 4 5 6
ROW 1 2 3 4 5 11 13
ROW 2 14 16 21 22 25 26
ROW 3 31 32 35 36 41 43
ROW 4 44 46 52 53 54 55
ROW 5 61 62 63 64 65 66
ROW 6 71 72 73 74 75 76
COL COL COL COL COL COL COL COL TOTAL
1 2 3 4 5 6 7 8
ROW 1 81 2 3 4 5 6 7 98 206
ROW 2 18 82 16 15 14 13 97 11 266
ROW 3 21 22 83 24 25 96 27 28 326
ROW 4 38 37 36 84 95 33 32 31 386
ROW 5 41 42 43 94 85 46 47 48 446
ROW 6 58 57 93 55 54 86 52 51 506
ROW 7 61 92 63 64 65 66 87 68 566
ROW 8 91 77 76 75 74 73 72 88 626
TOTAL 409 411 413 415 417 419 421 423
COL COL COL COL COL COL COL COL
1 2 3 4 5 6 7 8
ROW 1 2 3 4 5 6 7 11 13
ROW 2 14 15 16 18 21 22 24 25
ROW 3 27 28 31 32 33 36 37 38
ROW 4 41 42 43 46 47 48 51 52
ROW 5 54 55 57 58 61 63 64 65
ROW 6 66 68 72 73 74 75 76 77
ROW 7 81 82 83 84 85 86 87 88
ROW 8 91 92 93 94 95 96 97 98
BACK TO COMP150 PAGE.