Advertisement
Guest User

Untitled

a guest
Nov 16th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.90 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. /// <summary>
  5. /// Самостоятельная работа
  6. /// Адышев Барсбек БПИ1911
  7. /// 16.11.2019
  8. /// </summary>
  9. namespace AdyshevB1911_
  10. {
  11. class Program
  12. {
  13. static Random rd = new Random();
  14. static void Main(string[] args)
  15. {
  16. do
  17. {
  18. Console.Clear();
  19. int N = Check();
  20. int K = Check();
  21. string[,] array_1 = new string[N, K];
  22. array_1 = EmptyArray(array_1, N, K);
  23. array_1 = Array(array_1, N, K);
  24. ShowArray(array_1, N, K);
  25. WaterDigit(array_1, N, K);
  26. Console.WriteLine("Если хотите продолжить, нажмите любую клавишу.В противном случае нажмите Escape");
  27. }
  28. while (Console.ReadKey().Key != ConsoleKey.Escape);
  29. }
  30.  
  31.  
  32. /// <summary>
  33. /// Метод возвращает массив заполненный рандомным количеством иксов без полостей.
  34. /// </summary>
  35. /// <param name="array_1"> Массив для заполнения иксами. </param>
  36. /// <param name="n"> Количество строк массива. </param>
  37. /// <param name="k">Количество столбцов массива. </param>
  38. /// <returns>Возвращает заполненный иксами массив. </returns>
  39. static string[,] Array(string[,] array_1, int n, int k)
  40. {
  41. for (int j = 0; j < k; j++)
  42. for (int i = rd.Next(0, n + 1); i < n; i++)
  43. { array_1[i, j] = "x"; }
  44. return array_1;
  45. }
  46. /// <summary>
  47. /// Метод заполняет массив пробелами.
  48. /// </summary>
  49. /// <param name="array_1"> Необходимый для заполнения пробелами массив. </param>
  50. /// <param name="n"> Количество строк массива. </param>
  51. /// <param name="k">Количество столбцов массива. </param>
  52. /// <returns> Возвращает заполненный пробелами массив .</returns>
  53. static string[,] EmptyArray(string[,] array_1, int n, int k)
  54. {
  55. for (int i = 0; i < n; i++)
  56. for (int j = 0; j < k; j++)
  57. { array_1[i, j] = " "; }
  58. return array_1;
  59.  
  60. }
  61. /// <summary>
  62. /// Метод выводит в консоль все элементы полученного на входе массива.
  63. /// </summary>
  64. /// <param name="array"> Массив, который нужно отобразить в консоли.</param>
  65. /// <param name="n"> Количество строк массива. </param>
  66. /// <param name="k"> Количество столбцов массива. </param>
  67. static void ShowArray(string[,] array, int n, int k)
  68. {
  69. for (int i = 0; i < n; i++)
  70. {
  71. for (int j = 0; j < k; j++)
  72. { Console.Write(array[i, j]); }
  73. Console.WriteLine();
  74. }
  75. }
  76.  
  77. /// <summary>
  78. /// Метод возвращает число, а именно количество так называемой "воды".
  79. /// </summary>
  80. /// <param name="array"></param>
  81. /// <param name="n"></param>
  82. /// <param name="k"></param>
  83. /// <returns></returns>
  84. static void WaterDigit(string[,] array, int n, int k)
  85. {
  86. int amount = 0;
  87. string sign = "?";
  88. int answer = 0;
  89. for (int i = n - 2; i > 0; i--)
  90. {
  91. amount = 0;
  92. sign = "?";
  93. for (int j = k - 1; j > -1; j--)
  94. {
  95.  
  96. if (array[i, j] == "x")
  97. {
  98. if (sign == "x")
  99. answer += amount;
  100. sign = "x";
  101. amount = 0;
  102. }
  103. else if (array[i + 1, j] != " " && sign == "x")
  104. {
  105. amount++;
  106. array[i, j] = "x";
  107. }
  108. else if (array[i + 1, j] == " ")
  109. {
  110. amount = 0;
  111. sign = "?";
  112. }
  113. }
  114. }
  115. Console.WriteLine(answer);
  116.  
  117. }
  118. /// <summary>
  119. /// FormatException - выводит ошибку при неверном формате ввода данных
  120. /// ArgumentNullException - выводит ошибку при отсутствии ввода пользователем.
  121. /// StackoverFlowException - выводит ошибку при недостатке активной памяти компьютера.
  122. /// Создается меню по принципам проверки введенных пользователем данных.Метод приводит пользователя к правильному введению данных (формата и т.д ) путем выведения сооющений на экран.
  123. ///
  124. ///
  125. /// </summary>
  126. /// <returns>2Возвращает длину массива введенного пользователем.</returns>
  127. static int Check()
  128. {
  129. Console.Write("Введите число: ");
  130. int num;
  131. while (true)
  132. {
  133. try
  134. {
  135. num = int.Parse(Console.ReadLine());
  136. if (num <= 0 || num >= 100)
  137. throw new ArgumentException();
  138. break;
  139.  
  140. }
  141. catch (FormatException)
  142. {
  143. Console.WriteLine("Неправильный формат! Введите нормальное число.");
  144. }
  145. catch (ArgumentNullException)
  146. {
  147. Console.WriteLine("Введите число. Введите нормальное число.");
  148. }
  149. catch (OverflowException)
  150. {
  151. Console.WriteLine("Стек переполнен! Введите нормальное число");
  152. }
  153. catch (ArgumentException)
  154. {
  155. Console.WriteLine($"Границы [1;100 ]. Введите число,входящее в границы!");
  156. }
  157.  
  158.  
  159. }
  160. return (num);
  161. }
  162.  
  163.  
  164.  
  165. }
  166.  
  167.  
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement