namespace Otladka2 { public class Program { public static void Main(string[] args) { Console.WriteLine("Введите номер задачи: "); int num = Convert.ToInt32(Console.ReadLine()); switch (num) { //Вариант 4 задание 1. Все верно, кроме границ массива case 1: getOneTask(); break; //Вариант 4 задание 2. Неправильный код символа case 2: getTwoTask(); break; //Вариант 4 задание 3. Все верно case 3: getThreeTask(); break; //Вариант 4 задание 4. Все верно case 4: getFourTask(); break; //Вариант 4 задание 5. СМ комментарий возле метода case 5: getFiveTask(); break; } } //Вариант 4 задание 1. Все верно, кроме границ массива static void getOneTask() { Console.Write("Введите размерность массива: "); int n = Convert.ToInt32(Console.ReadLine()); int[] arr = new int[n]; Random rnd = new Random(); for (int i = 0; i < arr.Length; i++) { //метод next берет правую границу невключительно, чтоб соответствовало задаче - нужно границу взять за 101 arr[i] = rnd.Next(1, 100); } Console.WriteLine("Исходный массив: "); foreach (int item in arr) { Console.Write($"{item} "); } int od = arr[0], dv = arr[0], odInd = 0, dvInd = 0; for (int i = 0; i < arr.Length; i++) { if (1 == Convert.ToString(arr[i]).Length) { od = arr[i]; odInd = i; break; } } for (int i = 0; i < arr.Length; i++) { if (2 == Convert.ToString(arr[i]).Length) { dv = arr[i]; dvInd = i; break; } } int x; x = arr[odInd]; arr[odInd] = arr[dvInd]; arr[dvInd] = x; Console.WriteLine("\nИзмененный массив: "); foreach (int item in arr) { Console.Write($"{item} "); } } static void getTwoTask() { Console.Write("Введите размерность по строкам: "); int m = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите размерность по столбцам: "); int n = Convert.ToInt32(Console.ReadLine()); char[,] arr = new char[n, m]; Random rnd = new Random(); for (int i = 0; i < arr.GetLength(0); i++) { for (int j = 0; j < arr.GetLength(1); j++) { //метод next берет правую границу невключительно, чтоб соответствовало задаче - нужно границу взять за следующий за Z символ arr[i, j] = (char)rnd.Next('A', 'Z'); } } Console.WriteLine("Итоговая матрица: "); for (int i = 0; i < arr.GetLength(0); i++) { for (int j = 0; j < arr.GetLength(1); j++) { Console.Write($"{arr[i, j]} "); } Console.WriteLine(); } showMaxEvenCharID(arr); } //Вариант 4 задание 2. Неправильный код символа, выводит просто 0, ошибка была найдена посредством нескольких проверок: при разных буквах код остается 0 //static void showMaxEvenCharID(char[,] arr) //{ // int min = 0; // char ch = arr[0, 0]; // for (int i = 0; i < arr.GetLength(0); i++) // { // for (int j = 0; j < arr.GetLength(1); j++) // { // if (min > Convert.ToInt32(arr[i, j]) && Convert.ToInt32(arr[i, j]) % 2 == 0) // { // min = Convert.ToInt32(arr[i, j]); // ch = arr[i, j]; // } // } // } // Console.WriteLine($"Код буквы {ch} является наименьшим четным числом ({min})"); //} // Исправленный вариант static void showMaxEvenCharID(char[,] arr) { int min = 0; char ch = arr[0, 0]; for (int i = 0; i < arr.GetLength(0); i++) { for (int j = 0; j < arr.GetLength(1); j++) { int code = (int)arr[i, j]; if (min > code && code % 2 == 0) { min = code; ch = arr[i, j]; } } } Console.WriteLine($"Код буквы {ch} является наименьшим четным числом ({(int)ch})"); } //Вариант 4 Задание 3 Все верно static void getThreeTask() { Console.Write("Введите строку: "); string stroka = Console.ReadLine(); int maxSimb = stroka.Length; int podschetZap = 0; for (int i = 0; i < maxSimb; i++) { if (stroka[i] == ',') { podschetZap = podschetZap + 1; } } stroka = solutionForThree(ref stroka); Console.WriteLine("Количество удалённых символов: " + podschetZap); } static string solutionForThree(ref string stroka) { stroka = stroka.Replace(",", ""); Console.WriteLine("Итоговая строка: " + stroka); return stroka; } //Вариант 4 задание 4. Все верно static void getFourTask() { Console.Write("Введите строку: "); string stroka = Console.ReadLine(); stroka = solutionForFour(ref stroka); Console.Write("Итоговая строка: " + stroka); } static string solutionForFour(ref string stroka) { char[] probel = { ' ' }; stroka = stroka.TrimStart(probel); stroka = stroka.TrimEnd(probel); stroka = stroka.Replace(" ", "*"); return stroka; } //Вариант 4 Задание 5 //Ошибка условий: падходящий пароль M@rme1ad - проходит // но и пароль m@rmelad проходит, хотя нет заглавной буквы и цифры // при вводе пароля M@rme1a3 - выдает сообщение о том что предпоследний символ не может быть цифрой //static void getFiveTask1() //{ // Console.Write("Введите пароль: "); // string password = Console.ReadLine(); // //условие на проверку длины - правильное // if (password.Length >= 6) // { // //Если НЕ (в пароле есть цифры или заглавные буквы) ИЛИ в пароде есть цифры или строчные буквы // // таким образом условие срабатывает когда // if (!(password.All(ch => char.IsNumber(ch) || char.IsUpper(ch)) || password.All(ch => char.IsNumber(ch) || char.IsLower(ch)))) // { // //Если НЕ все символы в пароле это цифры ИЛИ Все символы в пароде это буквы, здесь ошибка условия необходимо вторую логическую конструкцию взять в скобки с НЕ // if (!(password.All(ch => char.IsNumber(ch)) || password.All(ch => char.IsLetter(ch)))) // { // int simb = 0; // for (int i = 0; i < password.Length; i++) // { // if ((password[i] == '@') || (password[i] == '!') || (password[i] == '#') || (password[i] == '$') || (password[i] == '%') || (password[i] == '^')) // { // simb = simb + 1; // } // } // if (simb >= 1) // { // char predposledSimb = password[password.Length - 1]; // if (char.IsNumber(predposledSimb)) // { // Console.Write("Предпоследний символ не должен быть цифрой!"); // } // else // { // Console.Write("Пароль надёжный!"); // } // } // else // { // Console.WriteLine("Пароль не имеет спец. символов (@, !, #, $, %, ^)"); // } // } // else // { // Console.Write("Пароль не имеет цифры"); // } // } // else // { // Console.Write("Пароль не имеет прописной буквы"); // } // } // else // { // Console.WriteLine("Пароль имеет длину менее 6 символов"); // } //} //Вариант 4 Задание 5 //Ошибка условий: падходящий пароль M@rme1ad - проходит // но и пароль m@rmelad проходит, хотя нет заглавной буквы и цифры // при вводе пароля M@rme1a3 - выдает сообщение о том что предпоследний символ не может быть цифрой static void getFiveTask() { Console.Write("Введите пароль: "); string password = Console.ReadLine(); //условие на проверку длины - правильное if (password.Length >= 6) { //Если НЕ ((в пароле ВСЕ цифры или ВСЕ заглавные буквы) ИЛИ в пароде ВСЕ цифры ИЛИ строчные буквы) // таким образом условие срабатывает когда все условия ложны - все верно if (!(password.All(ch => char.IsNumber(ch) || char.IsUpper(ch)) || password.All(ch => char.IsNumber(ch) || char.IsLower(ch)))) { //Если НЕ все символы в пароле это цифры ИЛИ Все символы в пароде это буквы, здесь ошибка условия необходимо вторую логическую конструкцию взять в скобки с НЕ // а лучше не загромождать код, и т.к. мы уже проверяем на наличие хотя бы одной заглавной буквы, условие на все цифры в пароле можно убрать, таким образом //Исправлено: if (!(password.All(ch => char.IsLetter(ch)))) { int simb = 0; for (int i = 0; i < password.Length; i++) { if ((password[i] == '@') || (password[i] == '!') || (password[i] == '#') || (password[i] == '$') || (password[i] == '%') || (password[i] == '^')) { simb = simb + 1; } } if (simb >= 1) { char predposledSimb = password[password.Length - 1]; //Здесь ошибка условия, второй переменной в метод нужно передать индекст символа в строке //Исправлено: if (char.IsNumber(password,(password.Length - 2))) { Console.Write("Предпоследний символ не должен быть цифрой!"); } else { Console.Write("Пароль надёжный!"); } } else { Console.WriteLine("Пароль не имеет спец. символов (@, !, #, $, %, ^)"); } } else { Console.Write("Пароль не имеет цифры"); } } else { Console.Write("Пароль не имеет прописной буквы"); } } else { Console.WriteLine("Пароль имеет длину менее 6 символов"); } } } }