алгоритм
- ввести количество чисел N
- заполнить двумерный массив размера sqr(n)*sqr(n)
- находим сумму элементов 1 строки s
- ищем суммы элементов всех строк, столбцов, диагоналей и сравниваем с s
- если находим неравность, то f=1
- если f=0, то квадрат -магический, иначе — нет.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 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 |