49 lines
870 B
Fortran
49 lines
870 B
Fortran
PROGRAM SPIRAL
|
|
|
|
IMPLICIT NONE
|
|
|
|
INTEGER, PARAMETER :: size = 5
|
|
INTEGER :: i, x = 0, y = 1, count = size, n = 0
|
|
INTEGER :: array(size,size)
|
|
|
|
DO i = 1, count
|
|
x = x + 1
|
|
array(x,y) = n
|
|
n = n + 1
|
|
END DO
|
|
|
|
DO
|
|
count = count - 1
|
|
DO i = 1, count
|
|
y = y + 1
|
|
array(x,y) = n
|
|
n = n + 1
|
|
END DO
|
|
DO i = 1, count
|
|
x = x - 1
|
|
array(x,y) = n
|
|
n = n + 1
|
|
END DO
|
|
IF (n > size*size-1) EXIT
|
|
count = count - 1
|
|
DO i = 1, count
|
|
y = y - 1
|
|
array(x,y) = n
|
|
n = n + 1
|
|
END DO
|
|
DO i = 1, count
|
|
x = x + 1
|
|
array(x,y) = n
|
|
n = n + 1
|
|
END DO
|
|
IF (n > size*size-1) EXIT
|
|
END DO
|
|
|
|
DO y = 1, size
|
|
DO x = 1, size
|
|
WRITE (*, "(I4)", ADVANCE="NO") array (x, y)
|
|
END DO
|
|
WRITE (*,*)
|
|
END DO
|
|
|
|
END PROGRAM SPIRAL
|