Untitled
unknown
c_cpp
a year ago
1.5 kB
2
Indexable
#include <iostream> /* Дана квадратная матрица nxn. Проверить, является ли данная матрица магическим квадратом */ int** createMatrix(int n) { int** a = new int*[n]; for (int i = 0; i < n; i++) a[i] = new int[n]; return a; } void fillMatrix (int** a, int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n ; j++) { scanf_s("%d", &a[i][j]); } } } int sumOnIStr(int** a, int i, int n) { int sum = 0; for (int j = 0; j < n; j++) { sum += a[i][j]; } return sum; } int sumOnICol(int** a, int i, int n) { int sum = 0; for (int j = 0; j < n; j++) { sum += a[j][i]; } return sum; } int sumOnMainDiag(int** a, int n) { int sum = 0; for (int i = 0; i < n; i++) { sum += a[i][i]; } return sum; } int sumOnSideDiag(int** a, int n) { int sum = 0; for (int i = 0; i < n; i++) { sum += a[i][n - i - 1]; } return sum; } bool isMagicSquare(int** a, int n) { int ref = sumOnIStr(a, 0, n); if ((sumOnMainDiag(a, n) != ref ) || (sumOnSideDiag(a, n) != ref)) return false; for (int i = 0; i < n; i++) { if ((sumOnIStr(a, i, n) != ref) || sumOnICol(a, i, n) != ref) { return false; } } return true; } int main() { int n; printf("Type n:\n"); scanf_s("%d", &n); int** matr = createMatrix(n); printf("Fill The matrix:\n"); fillMatrix(matr, n); if(isMagicSquare(matr, n)) printf("Your matrix is a Magic Square.\n"); else printf("Not a Magic Square.\n"); return 0; }
Editor is loading...
Leave a Comment