Guest User

Untitled

a guest
Nov 21st, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.72 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApp9
  8. {
  9. class Square
  10. {
  11. private int[][] square;
  12.  
  13. public Square(int size)
  14. {
  15. square = new int[size][];
  16. for (int i = 0; i < size; i ++)
  17. {
  18. square[i] = new int[size];
  19. }
  20.  
  21. }
  22.  
  23. public int SumRow(int row)
  24. {
  25. return square[row].Sum();
  26. }
  27.  
  28. public int SumCol(int col)
  29. {
  30. int sum = 0;
  31. for (int i = 0; i < square.Length; i ++)
  32. {
  33. sum += square[i][col];
  34. }
  35.  
  36. return sum;
  37. }
  38.  
  39. public int SumMainDiagonal()
  40. {
  41. int sum = 0;
  42. for (int i = 0; i < square.Length; i ++)
  43. {
  44. sum += square[i][i];
  45. }
  46.  
  47. return sum;
  48. }
  49.  
  50. public int SumOtherDiagonal()
  51. {
  52. int sum = 0;
  53. for (int i = 0; i < square.Length; i ++)
  54. {
  55. sum += square[i][square.Length - i - 1];
  56. }
  57.  
  58. return sum;
  59. }
  60.  
  61. public bool Magic()
  62. {
  63. int requiredSum = SumMainDiagonal();
  64.  
  65. if (SumOtherDiagonal() != requiredSum)
  66. {
  67. return false;
  68. }
  69.  
  70. for (int i = 0; i < square.Length; i ++)
  71. {
  72. if (SumRow(i) != requiredSum || SumCol(i) != requiredSum)
  73. {
  74. return false;
  75. }
  76. }
  77.  
  78. return true;
  79. }
  80.  
  81. public void PrintSquare()
  82. {
  83. for (int i = 0; i < square.Length; i ++)
  84. {
  85. for (int j = 0; j < square.Length; j ++)
  86. {
  87. Console.Write($"{square[i][j]}\t");
  88. }
  89. Console.WriteLine();
  90. }
  91. }
  92.  
  93. public void ReadSquare(string[] lines, int lineIndex)
  94. {
  95. for (int row = 0; row < square.Length; row ++)
  96. {
  97. string[] lineElements =
  98. lines[lineIndex + row].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
  99.  
  100. if (lineElements.Length != square.Length)
  101. {
  102. Console.WriteLine("ОШИБКА!");
  103. }
  104.  
  105. for (int i = 0; i < square.Length; i ++)
  106. {
  107. int.TryParse(lineElements[i], out square[row][i]);
  108. }
  109. }
  110. }
  111.  
  112. static void Main(string[] args)
  113. {
  114. string[] lines = System.IO.File.ReadAllLines("..\\..\\magicData.txt"); // читаем все строки файла в массив
  115. int lineIndex = 0; // на какой строке файла находимся
  116. int count = 0; // считаем, на каком мы сейчас квадрате
  117. while (lines.Length > lineIndex)
  118. {
  119. int size; // размер квадрата
  120. if (!int.TryParse(lines[lineIndex], out size))
  121. {
  122. Console.WriteLine($"Ошибка при чтении размера квадрата: {lines[lineIndex]} - не число (строка {lineIndex + 1})");
  123. break ;
  124. }
  125. if (size == -1) // в конце файла ожидается -1
  126. break;
  127. lineIndex++;
  128. // TODO: создаём новый квадрат размера size
  129. Square square = new Square(size);
  130. // TODO: вызываем метод считывания значений элементов квадрата
  131. square.ReadSquare(lines, lineIndex);
  132. lineIndex += size;
  133. Console.WriteLine($"\n******** Квадрат номер {++count} ********");
  134. // TODO: выводим квадрат
  135. square.PrintSquare();
  136. Console.WriteLine();
  137. // TODO: выводим суммы элеметов его
  138. // TODO: выводим суммы элементов его столбцов
  139. // TODO: выводим сумму элементов его главной диагонали
  140. // TODO: выводим сумму элементов его побочной диагонали
  141. // TODO: определяем и выводим, является ли квадрат магическим
  142. Console.WriteLine(square.Magic() ? "Magic" : "Not magic");
  143. }
  144.  
  145. while (Console.ReadKey().Key != ConsoleKey.Escape) { }
  146. }
  147.  
  148. }
  149. }
Add Comment
Please, Sign In to add comment