You are on page 1of 2

PROGRAM magic_square

IMPLICIT NONE
INTEGER :: row, column, I
INTEGER :: sum1, diagsum1, diagsum2
INTEGER, DIMENSION(4,4) :: square

OPEN(UNIT=10, file="magic_square_data.txt")
DO column = 1,4
DO row = 1,4
READ(10,*) square(row, column)
END DO
END DO
CLOSE(10)
DO row = 1, 4
PRINT 100, square(row,:)
END DO
sum1 = SUM( square(1,:))

DO column = 1, 4
IF (sum(square(:,column)) .NE. sum1) THEN
PRINT *, 'Not a magic square.'
STOP
ELSE
END IF
END DO

DO row = 1, 4
IF (sum(square(row,:)) .NE. sum1) THEN
PRINT *, 'This is not a magic square, sorry!'
STOP
ELSE
END IF
END DO

diagsum1 = 0
DO I = 1, 4
diagsum1 = diagsum1 + square(I,I)
END DO

diagsum2 = 0
DO I = 1, 4
diagsum2 = diagsum2 + square(I,5-I)
END DO

IF (diagsum1 .NE. sum1) THEN


PRINT *, 'Sorry, not a magic square.'
STOp
ELSE
END IF
IF (diagsum2 .NE. sum1) THEN
PRINT *, 'Not a magic square!'
STOP
ELSE
END IF
PRINT *, 'Yay a magic square! :)'

100 FORMAT( I3, 1X, I3, 1X, I3, 1X, I3 )


END PROGRAM magic_square

You might also like