Проверить, является ли матрица магическим квадратом - 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;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.455 из 5
Похожие ответы