алгоритм
- ввести количество чисел N
- заполнить двумерный массив размера sqr(n)*sqr(n)
- находим сумму элементов 1 строки s
- ищем суммы элементов всех строк, столбцов, диагоналей и сравниваем с s
- если находим неравность, то f=1
- если f=0, то квадрат -магический, иначе — нет.
CLS
INPUT "Razmer storony matrici:", n
DIM KV(n, n), s, f
' Вводим эл-ты матрицы
FOR iy = 1 TO n: FOR ix = 1 TO n
LOCATE 10, 5: PRINT "Vvedite element(goriz:" + STR$(ix) + " vert:" + STR$(iy) + ")"
PRINT SPACE$(80): LOCATE CSRLIN - 1, 1: INPUT a
KV(iy, ix) = a
NEXT: NEXT
' Проверяем на "волшебность")))
FOR i = 1 TO n: s = s + KV(i, 1): NEXT
' Строки&столбцы
FOR iy = 1 TO n: a = 0
FOR ix = 1 TO n
a = a + KV(iy, ix)
NEXT
IF a <> s THEN f = 1
NEXT
FOR ix = 1 TO n: a = 0
FOR iy = 1 TO n
a = a + KV(iy, ix)
NEXT
IF a <> s THEN f = 1
NEXT
' Диагонали
a = 0
FOR i = 1 TO n
a = a + KV(i, i)
NEXT: IF a <> s THEN f = 1
a = 0
FOR i = 1 TO n
a = a + KV((n - i) + 1, i)
NEXT: IF a <> s THEN f = 1
' Выводим результат
LOCATE 2, 1
IF f = 0 THEN
COLOR 10: PRINT "Magicheskij kvadrat"
ELSE
COLOR 12: PRINT "Ne magicheskij kvadrat"
END IF
COLOR 7