Определить, является ли матрица магическим квадратом - C (СИ)
Формулировка задачи:
Дана матрица
A(n*n) целых чисел, составленная из чисел 1 , 2 , . . . n2.
Определить, является ли она «магическим квадратом» (т.е. суммы по каждому столбцу, каждой строке и каждой из двух диагоналей равны между собой)
помогите составить код.
Решение задачи: «Определить, является ли матрица магическим квадратом»
textual
Листинг программы
#include <stdio.h> #define n 9 int main (void) { int c, i, k; int a[n][n]; /* заполняем массив числами, начиная с 1 */ for (c=1, i=0; i<n; i++) for (k=0; k<n; k++) a[i][k] = c++; /* найдем суммы диагоналей */ int s1=0, s2=0; // суммы главной и побочной диагоналей c = n-1; for (i=0; i<n; i++) for (k=0; k<n; k++) { if (i == k) s1 += a[i][k]; // сумма главной if (i+k == c) s2 += a[i][k]; // и побочной диагоналей } /* если диагонали не равны, то дальше проверять нет смысла */ if (s1 != s2) {c = 0; goto end;} c = 1; // если проверка успешна, считаем что квадрат магический /* проверяем строки и столбцы */ int s3; for (i=0; i<n; i++) { for (s2=s3=k=0; k<n; k++) { s2 += a[i][k]; // находим сумму в строке s3 += a[k][i]; // находим сумму в столбце } /* если сумма не равна диагонали, то дальше проверять нет смысла */ if (s2 != s1 || s3 != s1) {c = 0; goto end;} } end: // if (c != 0) square is magical printf("Square is%s.\n", (c)? " magical" : "n't magical"); return 0; }
Объяснение кода листинга программы
- Включаем заголовочный файл stdio.h для использования функций ввода-вывода
- Задаем размерность матрицы в 9 строк и 9 столбцов
- Инициализируем переменные c, i, k для использования в циклах
- Заполняем массив a[n][n] числами, начиная с 1
- Находим суммы диагоналей s1 и s2
- Проверяем равенство диагоналей s1 и s2, если они не равны, то дальнейшая проверка не имеет смысла
- Проверяем строки и столбцы матрицы на равенство суммы элементов соответствующей диагонали
- Если сумма элементов строки или столбца не равна соответствующей диагонали, то дальнейшая проверка не имеет смысла
- Выводим сообщение о том, является ли квадрат магическим или нет
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д