Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApp9
- {
- class Square
- {
- private int[][] square;
- public Square(int size)
- {
- square = new int[size][];
- for (int i = 0; i < size; i ++)
- {
- square[i] = new int[size];
- }
- }
- public int SumRow(int row)
- {
- return square[row].Sum();
- }
- public int SumCol(int col)
- {
- int sum = 0;
- for (int i = 0; i < square.Length; i ++)
- {
- sum += square[i][col];
- }
- return sum;
- }
- public int SumMainDiagonal()
- {
- int sum = 0;
- for (int i = 0; i < square.Length; i ++)
- {
- sum += square[i][i];
- }
- return sum;
- }
- public int SumOtherDiagonal()
- {
- int sum = 0;
- for (int i = 0; i < square.Length; i ++)
- {
- sum += square[i][square.Length - i - 1];
- }
- return sum;
- }
- public bool Magic()
- {
- int requiredSum = SumMainDiagonal();
- if (SumOtherDiagonal() != requiredSum)
- {
- return false;
- }
- for (int i = 0; i < square.Length; i ++)
- {
- if (SumRow(i) != requiredSum || SumCol(i) != requiredSum)
- {
- return false;
- }
- }
- return true;
- }
- public void PrintSquare()
- {
- for (int i = 0; i < square.Length; i ++)
- {
- for (int j = 0; j < square.Length; j ++)
- {
- Console.Write($"{square[i][j]}\t");
- }
- Console.WriteLine();
- }
- }
- public void ReadSquare(string[] lines, int lineIndex)
- {
- for (int row = 0; row < square.Length; row ++)
- {
- string[] lineElements =
- lines[lineIndex + row].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
- if (lineElements.Length != square.Length)
- {
- Console.WriteLine("ОШИБКА!");
- }
- for (int i = 0; i < square.Length; i ++)
- {
- int.TryParse(lineElements[i], out square[row][i]);
- }
- }
- }
- static void Main(string[] args)
- {
- string[] lines = System.IO.File.ReadAllLines("..\\..\\magicData.txt"); // читаем все строки файла в массив
- int lineIndex = 0; // на какой строке файла находимся
- int count = 0; // считаем, на каком мы сейчас квадрате
- while (lines.Length > lineIndex)
- {
- int size; // размер квадрата
- if (!int.TryParse(lines[lineIndex], out size))
- {
- Console.WriteLine($"Ошибка при чтении размера квадрата: {lines[lineIndex]} - не число (строка {lineIndex + 1})");
- break ;
- }
- if (size == -1) // в конце файла ожидается -1
- break;
- lineIndex++;
- // TODO: создаём новый квадрат размера size
- Square square = new Square(size);
- // TODO: вызываем метод считывания значений элементов квадрата
- square.ReadSquare(lines, lineIndex);
- lineIndex += size;
- Console.WriteLine($"\n******** Квадрат номер {++count} ********");
- // TODO: выводим квадрат
- square.PrintSquare();
- Console.WriteLine();
- // TODO: выводим суммы элеметов его
- // TODO: выводим суммы элементов его столбцов
- // TODO: выводим сумму элементов его главной диагонали
- // TODO: выводим сумму элементов его побочной диагонали
- // TODO: определяем и выводим, является ли квадрат магическим
- Console.WriteLine(square.Magic() ? "Magic" : "Not magic");
- }
- while (Console.ReadKey().Key != ConsoleKey.Escape) { }
- }
- }
- }
Add Comment
Please, Sign In to add comment