Определить является ли заданная квадратная матрица порядка n магическим квадратом - C (СИ)
Формулировка задачи:
Определить является ли заданная квадратная матрица порядка n магическим квадратом, то есть такой, в которой суммы элементов во всех строках и столбцах одинаковы
Решение задачи: «Определить является ли заданная квадратная матрица порядка n магическим квадратом»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <iostream>
int main() {
int n;
printf("Введите размер матрицы:\n");
std::cin>>n;
int matrix[n][n];
int summ[n*2];
int g = 0;
bool state = true;
for(int i = 0; i<n;i++) {
for (int j =0; j <n; j++) {
printf("Введите значение элемента [%d,%d]:\n",i,j);
std::cin>>matrix[i][j];
}
}
for (int i = 0;i<n;i++) {
int temp=0;
for(int j =0;j<n;j++) {
temp+=matrix[i][j];
summ[g] = temp;
}
g++;
temp=0;
}
for (int i = 0; i< n; i++) {
int temp=0;
for (int j=0; j<n;j++) {
temp+=matrix[j][i];
summ[g] = temp;
}
g++;
temp=0;
}
for (int i =0; i < n*2;i++) {
if (i==(n*2)-1) {
} else {
if(summ[i]!=summ[i+1]) {
state=false;
break;
}
}
}
if(state) {
printf("Матрица является магическим квадратом\n");
} else {
printf("Матрица не является магическим квадратом\n");
}
return 0;
}
Объяснение кода листинга программы
- Объявляются переменные: n (размер матрицы), matrix[n][n] (квадратная матрица), summ[n*2] (сумма элементов матрицы), g (счетчик для заполнения суммы), state (флаг для определения является ли матрица магическим квадратом), temp (временная переменная).
- Пользователю предлагается ввести размер матрицы.
- В цикле заполняются элементы матрицы.
- В цикле заполняются суммы элементов матрицы по диагоналям.
- Проверяется условие для определения является ли матрица магическим квадратом.
- Выводится сообщение о результате проверки.
- Программа завершается.