Program.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. namespace Otladka2
  2. {
  3. public class Program
  4. {
  5. public static void Main(string[] args)
  6. {
  7. Console.WriteLine("Введите номер задачи: ");
  8. int num = Convert.ToInt32(Console.ReadLine());
  9. switch (num)
  10. {
  11. //Вариант 4 задание 1. Все верно, кроме границ массива
  12. case 1: getOneTask(); break;
  13. //Вариант 4 задание 2. Неправильный код символа
  14. case 2: getTwoTask(); break;
  15. //Вариант 4 задание 3. Все верно
  16. case 3: getThreeTask(); break;
  17. //Вариант 4 задание 4. Все верно
  18. case 4: getFourTask(); break;
  19. //Вариант 4 задание 5. СМ комментарий возле метода
  20. case 5: getFiveTask(); break;
  21. }
  22. }
  23. //Вариант 4 задание 1. Все верно, кроме границ массива
  24. static void getOneTask()
  25. {
  26. Console.Write("Введите размерность массива: ");
  27. int n = Convert.ToInt32(Console.ReadLine());
  28. int[] arr = new int[n];
  29. Random rnd = new Random();
  30. for (int i = 0; i < arr.Length; i++)
  31. {
  32. //метод next берет правую границу невключительно, чтоб соответствовало задаче - нужно границу взять за 101
  33. arr[i] = rnd.Next(1, 100);
  34. }
  35. Console.WriteLine("Исходный массив: ");
  36. foreach (int item in arr)
  37. {
  38. Console.Write($"{item} ");
  39. }
  40. int od = arr[0], dv = arr[0], odInd = 0, dvInd = 0;
  41. for (int i = 0; i < arr.Length; i++)
  42. {
  43. if (1 == Convert.ToString(arr[i]).Length)
  44. {
  45. od = arr[i];
  46. odInd = i;
  47. break;
  48. }
  49. }
  50. for (int i = 0; i < arr.Length; i++)
  51. {
  52. if (2 == Convert.ToString(arr[i]).Length)
  53. {
  54. dv = arr[i];
  55. dvInd = i;
  56. break;
  57. }
  58. }
  59. int x;
  60. x = arr[odInd];
  61. arr[odInd] = arr[dvInd];
  62. arr[dvInd] = x;
  63. Console.WriteLine("\nИзмененный массив: ");
  64. foreach (int item in arr)
  65. {
  66. Console.Write($"{item} ");
  67. }
  68. }
  69. static void getTwoTask()
  70. {
  71. Console.Write("Введите размерность по строкам: ");
  72. int m = Convert.ToInt32(Console.ReadLine());
  73. Console.Write("Введите размерность по столбцам: ");
  74. int n = Convert.ToInt32(Console.ReadLine());
  75. char[,] arr = new char[n, m];
  76. Random rnd = new Random();
  77. for (int i = 0; i < arr.GetLength(0); i++)
  78. {
  79. for (int j = 0; j < arr.GetLength(1); j++)
  80. {
  81. //метод next берет правую границу невключительно, чтоб соответствовало задаче - нужно границу взять за следующий за Z символ
  82. arr[i, j] = (char)rnd.Next('A', 'Z');
  83. }
  84. }
  85. Console.WriteLine("Итоговая матрица: ");
  86. for (int i = 0; i < arr.GetLength(0); i++)
  87. {
  88. for (int j = 0; j < arr.GetLength(1); j++)
  89. {
  90. Console.Write($"{arr[i, j]} ");
  91. }
  92. Console.WriteLine();
  93. }
  94. showMaxEvenCharID(arr);
  95. }
  96. //Вариант 4 задание 2. Неправильный код символа, выводит просто 0, ошибка была найдена посредством нескольких проверок: при разных буквах код остается 0
  97. //static void showMaxEvenCharID(char[,] arr)
  98. //{
  99. // int min = 0;
  100. // char ch = arr[0, 0];
  101. // for (int i = 0; i < arr.GetLength(0); i++)
  102. // {
  103. // for (int j = 0; j < arr.GetLength(1); j++)
  104. // {
  105. // if (min > Convert.ToInt32(arr[i, j]) && Convert.ToInt32(arr[i, j]) % 2 == 0)
  106. // {
  107. // min = Convert.ToInt32(arr[i, j]);
  108. // ch = arr[i, j];
  109. // }
  110. // }
  111. // }
  112. // Console.WriteLine($"Код буквы {ch} является наименьшим четным числом ({min})");
  113. //}
  114. // Исправленный вариант
  115. static void showMaxEvenCharID(char[,] arr)
  116. {
  117. int min = 0;
  118. char ch = arr[0, 0];
  119. for (int i = 0; i < arr.GetLength(0); i++)
  120. {
  121. for (int j = 0; j < arr.GetLength(1); j++)
  122. {
  123. int code = (int)arr[i, j];
  124. if (min > code && code % 2 == 0)
  125. {
  126. min = code;
  127. ch = arr[i, j];
  128. }
  129. }
  130. }
  131. Console.WriteLine($"Код буквы {ch} является наименьшим четным числом ({(int)ch})");
  132. }
  133. //Вариант 4 Задание 3 Все верно
  134. static void getThreeTask()
  135. {
  136. Console.Write("Введите строку: ");
  137. string stroka = Console.ReadLine();
  138. int maxSimb = stroka.Length;
  139. int podschetZap = 0;
  140. for (int i = 0; i < maxSimb; i++)
  141. {
  142. if (stroka[i] == ',')
  143. {
  144. podschetZap = podschetZap + 1;
  145. }
  146. }
  147. stroka = solutionForThree(ref stroka);
  148. Console.WriteLine("Количество удалённых символов: " + podschetZap);
  149. }
  150. static string solutionForThree(ref string stroka)
  151. {
  152. stroka = stroka.Replace(",", "");
  153. Console.WriteLine("Итоговая строка: " + stroka);
  154. return stroka;
  155. }
  156. //Вариант 4 задание 4. Все верно
  157. static void getFourTask()
  158. {
  159. Console.Write("Введите строку: ");
  160. string stroka = Console.ReadLine();
  161. stroka = solutionForFour(ref stroka);
  162. Console.Write("Итоговая строка: " + stroka);
  163. }
  164. static string solutionForFour(ref string stroka)
  165. {
  166. char[] probel = { ' ' };
  167. stroka = stroka.TrimStart(probel);
  168. stroka = stroka.TrimEnd(probel);
  169. stroka = stroka.Replace(" ", "*");
  170. return stroka;
  171. }
  172. //Вариант 4 Задание 5
  173. //Ошибка условий: падходящий пароль M@rme1ad - проходит
  174. // но и пароль m@rmelad проходит, хотя нет заглавной буквы и цифры
  175. // при вводе пароля M@rme1a3 - выдает сообщение о том что предпоследний символ не может быть цифрой
  176. //static void getFiveTask1()
  177. //{
  178. // Console.Write("Введите пароль: ");
  179. // string password = Console.ReadLine();
  180. // //условие на проверку длины - правильное
  181. // if (password.Length >= 6)
  182. // {
  183. // //Если НЕ (в пароле есть цифры или заглавные буквы) ИЛИ в пароде есть цифры или строчные буквы
  184. // // таким образом условие срабатывает когда
  185. // if (!(password.All(ch => char.IsNumber(ch) || char.IsUpper(ch)) || password.All(ch => char.IsNumber(ch) || char.IsLower(ch))))
  186. // {
  187. // //Если НЕ все символы в пароле это цифры ИЛИ Все символы в пароде это буквы, здесь ошибка условия необходимо вторую логическую конструкцию взять в скобки с НЕ
  188. // if (!(password.All(ch => char.IsNumber(ch)) || password.All(ch => char.IsLetter(ch))))
  189. // {
  190. // int simb = 0;
  191. // for (int i = 0; i < password.Length; i++)
  192. // {
  193. // if ((password[i] == '@') || (password[i] == '!') || (password[i] == '#') || (password[i] == '$') || (password[i] == '%') || (password[i] == '^'))
  194. // {
  195. // simb = simb + 1;
  196. // }
  197. // }
  198. // if (simb >= 1)
  199. // {
  200. // char predposledSimb = password[password.Length - 1];
  201. // if (char.IsNumber(predposledSimb))
  202. // {
  203. // Console.Write("Предпоследний символ не должен быть цифрой!");
  204. // }
  205. // else
  206. // {
  207. // Console.Write("Пароль надёжный!");
  208. // }
  209. // }
  210. // else
  211. // {
  212. // Console.WriteLine("Пароль не имеет спец. символов (@, !, #, $, %, ^)");
  213. // }
  214. // }
  215. // else
  216. // {
  217. // Console.Write("Пароль не имеет цифры");
  218. // }
  219. // }
  220. // else
  221. // {
  222. // Console.Write("Пароль не имеет прописной буквы");
  223. // }
  224. // }
  225. // else
  226. // {
  227. // Console.WriteLine("Пароль имеет длину менее 6 символов");
  228. // }
  229. //}
  230. //Вариант 4 Задание 5
  231. //Ошибка условий: падходящий пароль M@rme1ad - проходит
  232. // но и пароль m@rmelad проходит, хотя нет заглавной буквы и цифры
  233. // при вводе пароля M@rme1a3 - выдает сообщение о том что предпоследний символ не может быть цифрой
  234. static void getFiveTask()
  235. {
  236. Console.Write("Введите пароль: ");
  237. string password = Console.ReadLine();
  238. //условие на проверку длины - правильное
  239. if (password.Length >= 6)
  240. {
  241. //Если НЕ ((в пароле ВСЕ цифры или ВСЕ заглавные буквы) ИЛИ в пароде ВСЕ цифры ИЛИ строчные буквы)
  242. // таким образом условие срабатывает когда все условия ложны - все верно
  243. if (!(password.All(ch => char.IsNumber(ch) || char.IsUpper(ch)) || password.All(ch => char.IsNumber(ch) || char.IsLower(ch))))
  244. {
  245. //Если НЕ все символы в пароле это цифры ИЛИ Все символы в пароде это буквы, здесь ошибка условия необходимо вторую логическую конструкцию взять в скобки с НЕ
  246. // а лучше не загромождать код, и т.к. мы уже проверяем на наличие хотя бы одной заглавной буквы, условие на все цифры в пароле можно убрать, таким образом
  247. //Исправлено:
  248. if (!(password.All(ch => char.IsLetter(ch))))
  249. {
  250. int simb = 0;
  251. for (int i = 0; i < password.Length; i++)
  252. {
  253. if ((password[i] == '@') || (password[i] == '!') || (password[i] == '#') || (password[i] == '$') || (password[i] == '%') || (password[i] == '^'))
  254. {
  255. simb = simb + 1;
  256. }
  257. }
  258. if (simb >= 1)
  259. {
  260. char predposledSimb = password[password.Length - 1];
  261. //Здесь ошибка условия, второй переменной в метод нужно передать индекст символа в строке
  262. //Исправлено:
  263. if (char.IsNumber(password,(password.Length - 2)))
  264. {
  265. Console.Write("Предпоследний символ не должен быть цифрой!");
  266. }
  267. else
  268. {
  269. Console.Write("Пароль надёжный!");
  270. }
  271. }
  272. else
  273. {
  274. Console.WriteLine("Пароль не имеет спец. символов (@, !, #, $, %, ^)");
  275. }
  276. }
  277. else
  278. {
  279. Console.Write("Пароль не имеет цифры");
  280. }
  281. }
  282. else
  283. {
  284. Console.Write("Пароль не имеет прописной буквы");
  285. }
  286. }
  287. else
  288. {
  289. Console.WriteLine("Пароль имеет длину менее 6 символов");
  290. }
  291. }
  292. }
  293. }