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.