Проверить, является ли матрица магическим квадратом - 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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д