Проверить, является ли матрица магическим квадратом - C#
Формулировка задачи:
написать программу, которая проверяет, является ли введенная с клавиатуры квадратная матрица "магическим квадратом".
подскажите каким более удобным способом можно проверить матрицу.
вот мой код , но он не работает .
исправьте пожайлуста мой код и напишите свою версию.
Console.WriteLine("Введите размер матрицы ");
Console.Write("-> ");
int n = int.Parse(Console.ReadLine());
int x = n;
int z = n;
int[,] mas;
mas = new int[x, z];
for (int i = 0; i < mas.Length; i++)
{
for (int j = 0; j < mas.Length; j++)
{
Console.WriteLine("Заполняем ряды матрицы. введите число и нажмите <Enter>");
Console.Write("-> ");
mas[i,j] = int.Parse(Console.ReadLine());
if(j == 2)
{
break;
}
}
if (i == 2)
{
break;
}
}
for (int i = 0; i < mas.Length; i++)
{
for (int j = 0; j < mas.Length; j++)
{
Console.Write(mas[i,j] + " ");
if (j == 2)
{
break;
}
}
Console.WriteLine();
if (i == 2)
{
break;
}
}
int sum = 0;
int sum2 = 0;
int sum3 = 0;
int sum4 = 0;
int sum5 = 0;
for (int i = 0; i < mas.Length; i++)
{
for (int j = 0; j < mas.Length; j++)
{
sum += mas[i, j];
if(j == 2)
{
for ( i = 1; i < mas.Length; i++)
{
for ( j = 0; j < mas.Length; j++)
{
sum2 += mas[i, j];
if(j == 2)
{
for ( i = 2; i < mas.Length; i++)
{
for ( j = 0; j < mas.Length; j++)
{
sum3 += mas[i, j];
if(j == 2)
{
for ( j = 0; j < mas.Length; j++)
{
for ( i = 0; i < mas.Length; i++)
{
sum4 += mas[j,i];
if(i == 2)
{
break;
}
}
}
}
}
}
}
}
}
}
}
}
Console.WriteLine("{0} {1} {2} {3}");Решение задачи: «Проверить, является ли матрица магическим квадратом»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[,] arr = { { 2, 7, 6 },
{ 9, 5, 1 },
{ 4, 3, 8 } };
Console.WriteLine(IsMagic(arr));
Console.ReadKey();
}
static bool IsMagic(int[,] arr) {
int n = arr.GetLength(0);
if (n != arr.GetLength(1)) return false;
int sum = n * (n * n + 1) / 2;
for (int i = 0; i < n; i++){
int sumRow = 0;
int sumCol = 0;
for (int j = 0; j < n; j++){
sumRow += arr[i,j];
sumCol += arr[j,i];
}
if (sumRow != sum || sumCol != sum) return false;
}
int sumDiag1 = 0;
int sumDiag2 = 0;
for (int i = 0; i < n; i++)
{
sumDiag1 += arr[i,i];
sumDiag2 += arr[n - 1 - i, i];
}
if (sumDiag1 != sum || sumDiag2 != sum) return false;
return true;
}
}
}