static void Main(string[] args) { List <Fun> methods = new List <Fun>() { FunQuadratic, FunPow3, Math.Sin, Math.Cos }; Console.WriteLine("В программе заложены четыре функции:\n1. x^2 - 50x + 10\n2. x^3\n3. Sin(x)\n4. Cos(x)\n"); int num = MyMetods.ReadInt("Укажите номер функции которую хотите использовать") - 1; try { SaveFunc(methods[num], "data.bin", -100, 100, 0.5); double[] arr = Load("data.bin", out double min); //Массив считанных значений. Console.WriteLine(min); //Вывод массива в консоль //for (int i = 0; i < arr.Length; i++) //{ // Console.WriteLine(arr[i]); //} } catch (Exception) { Console.WriteLine("Вы указали несуществующий номер функции."); } MyMetods.Pause(); }
//Ронжин Л. //2.Реализуйте задачу 1 в виде статического класса StaticClass; // а) Класс должен содержать статический метод, который принимает на вход массив и решает задачу 1; // б) *Добавьте статический метод для считывания массива из текстового файла. //Метод должен возвращать массив целых чисел; // в)**Добавьте обработку ситуации отсутствия файла на диске. static void Main(string[] args) { int n = 20; int x = 10000; int count; int[] arr = StaticClass.Add(n, x); MyMetods.Print($"Массив из {n} чисел от {-x} до {x}"); StaticClass.PrintArray(arr); count = StaticClass.CountPairs(arr); Console.WriteLine($"Количество пар, в которых 2 элемента подряд делятся на 3, равно - {count}"); Console.WriteLine("Запись в файл и получение маччива из него"); // пункт б и в. StaticClass.SaveToFile("temp.txt", n, arr); StaticClass.PrintArray(StaticClass.AddFromFile("temp.txt")); Console.WriteLine("Чтение из несуществующего файла"); try { StaticClass.PrintArray(StaticClass.AddFromFile("temp1.txt")); } catch { Console.WriteLine("Файл не найден."); } MyMetods.Pause(); }
//Сергей есть ли какой либо способ сортировки коллкции по значению? я использовал order by, но этот метод мне знаком поверхностно //И в 4м задании может не совсем правильно понял суть, я вывел 3х студентов + тех кто имеет такой же бал как у 3го, //возможно надо было взять 3 минимальнах бала и вывести всех дял этих балов? /*Т.е. надо было? * студент1 - мин1 * студент2 - мин1 * студент3 - мин2 * студент4 - мин2 * студент5 - мин3 * студент6 - мин3 * В моем коде выведется только 1е 4ре студента, но насколько я понял для вывода как в выше логика проще, * просто count менять при смене оценки а не каждом шаге цикла */ //Ронжин Л. //4. *Задача ЕГЭ. //На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней школы. //В первой строке сообщается количество учеников N, которое не меньше 10, но не превосходит 100, //каждая из следующих N строк имеет следующий формат: //<Фамилия> <Имя> <оценки>, //где<Фамилия> — строка, состоящая не более чем из 20 символов, <Имя> — строка, состоящая не более чем из 15 символов, //<оценки> — через пробел три целых числа, соответствующие оценкам по пятибалльной системе. <Фамилия> и<Имя>, //а также <Имя> и<оценки> разделены одним пробелом. Пример входной строки: //Иванов Петр 4 5 3 //Требуется написать как можно более эффективную программу, которая будет выводить на экран фамилии и имена //трёх худших по среднему баллу учеников.Если среди остальных есть ученики, набравшие тот же средний балл, //что и один из трёх худших, следует вывести и их фамилии и имена. static void Main() { string[,] arr = Students.ReadFile("GradesList.txt"); Students[] Student = new Students[arr.GetLength(0)]; for (int i = 0; i < arr.GetLength(0); i++) { Student[i] = new Students() { suname = arr[i, 0], name = arr[i, 1], rating1 = arr[i, 2], rating2 = arr[i, 3], rating3 = arr[i, 4] }; } Console.WriteLine("Список студентов и средний бал:"); for (int i = 0; i < arr.GetLength(0); i++) { Console.WriteLine($"{Student[i].SunameAndName} - {Student[i].Score}"); } Console.WriteLine(); Console.WriteLine("Список трёх худших студентов и их средний бал\n" + "Так же будут выведены студенты у которых средний бал такой же как у трёх худших:"); Students.MinScore(Student); MyMetods.Pause(); }
//Ронжин Л. //3.*Описать класс дробей — рациональных чисел, являющихся отношением двух целых чисел. //Предусмотреть методы сложения, вычитания, умножения и деления дробей. //Написать программу, демонстрирующую все разработанные элементы класса. //* Добавить свойства типа int для доступа к числителю и знаменателю; //* Добавить свойство типа double только на чтение, чтобы получить десятичную дробь числа; //** Добавить проверку, чтобы знаменатель не равнялся 0. Выбрасывать исключение ArgumentException("Знаменатель не может быть равен 0"); //*** Добавить упрощение дробей. static void Main(string[] args) { string mes1 = "Введите числитель 1й дроби"; string mes2 = "Введите знаменатель 1й дроби"; Ratio ratio1 = new Ratio(MyMetods.ReadInt(mes1), MyMetods.ReadInt(mes2)); mes1 = "Введите числитель 2й дроби"; mes2 = "Введите знаменатель 2й дроби"; Ratio ratio2 = new Ratio(); ratio2.M = MyMetods.ReadInt(mes1); ratio2.N = MyMetods.ReadInt(mes2); MyMetods.Print($"У Вас есть 2 дроби:{ratio1} и {ratio2}."); MyMetods.Print($"В десятичной форме данные дроби имеют вид: {ratio1.Des} и {ratio2.Des}."); Ratio rez; rez = Ratio.Simplification(Ratio.Sum(ratio1, ratio2)); Console.WriteLine($"{ratio1} + {ratio2} = {rez}"); rez = Ratio.Simplification(Ratio.Minus(ratio1, ratio2)); Console.WriteLine($"{ratio1} - {ratio2} = {rez}"); rez = Ratio.Simplification(Ratio.Multi(ratio1, ratio2)); Console.WriteLine($"{ratio1} * {ratio2} = {rez}"); rez = Ratio.Simplification(Ratio.Div(ratio1, ratio2)); Console.WriteLine($"{ratio1} / {ratio2} = {rez}"); MyMetods.Pause(); }
static void Main() { // Создаем новый делегат и передаем ссылку на него в метод Table Console.WriteLine("Таблица функции MyFunc:"); // Параметры метода и тип возвращаемого значения, должны совпадать с делегатом Table(new Fun(MyFuncPow), 5, -2, 2); Console.WriteLine("Еще раз та же таблица, но вызов организован по новому"); // Упрощение(c C# 2.0).Делегат создается автоматически. Table(MyFuncPow, 5, -2, 2); Console.WriteLine("Таблица функции a*Sin:"); Table(MyFuncSin, 5, -2, 2); // Можно передавать уже созданные методы Console.WriteLine("Таблица функции a*x^2:"); //Упрощение(с C# 2.0). Использование анонимного метода Table(delegate(double x, double a) { return(a * x * x); }, 5, 0, 3); //Список методов в делегате Console.WriteLine("Работа делегата со списком методов:"); List <Fun> methods = new List <Fun>() { MyFuncPow }; methods.Add(MyFuncSin); Plot(methods, 5, 0, 3); MyMetods.Pause(); }
//Сергей при частотном анализе через класс Dictionary как вывести коллекцию? я использовал KeyValuePair<string, int> правильно ли это? //Ронжин Л. //2. Разработать статический класс Message, содержащий следующие статические методы для обработки текста: //а) Вывести только те слова сообщения, которые содержат не более n букв. //б) Удалить из сообщения все слова, которые заканчиваются на заданный символ. //в) Найти самое длинное слово сообщения. //г) Сформировать строку с помощью StringBuilder из самых длинных слов сообщения. //д) ***Создать метод, который производит частотный анализ текста.В качестве параметра в него передается массив слов и текст, //в качестве результата метод возвращает сколько раз каждое из слов массива входит в этот текст. //Здесь требуется использовать класс Dictionary. static void Main(string[] args) { string str = "Съешь ещё этих мягких французских булок, да выпей чаю."; Console.WriteLine("Исходная строка: " + str); Console.Write("Искомые слова: "); Message.StringSize(str, 5); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Исходная строка: " + str); Console.Write("Искомые слова: "); Message.DeleteWords(str, 'х'); Console.WriteLine(); str = "Съешь ещё этих мягких французских булок, французскда выпей чаю."; Console.WriteLine("Исходная строка: " + str); Console.WriteLine($"Самые длинные слова сообщения: {Message.MaxWords(str)}"); Console.WriteLine($"Строка из самых длинных слов сообщения: {Message.StringBuilder(Message.MaxWords(str))}"); str = "Съешь ещё этих мягких французских булок, французскда выпей чаю. Съешь ещё этих мягких французских булок, да выпей чаю. Съешь ещё этих мягких французских булок, да выпей чаю."; Console.WriteLine(); Console.WriteLine("Частотный анализ текста."); Console.WriteLine("Исходная строка: " + str); Console.WriteLine("Результат:"); Message.CountDictionary(str); MyMetods.Pause(); }
//Ронжин Л. //1. Дан целочисленный массив из 20 элементов. //Элементы массива могут принимать целые значения от –10 000 до 10 000 включительно. //Заполнить случайными числами. //Написать программу, позволяющую найти и вывести количество пар элементов массива, //в которых только одно число делится на 3. В данной задаче под парой подразумевается //два подряд идущих элемента массива.Например, для массива из пяти элементов: 6; 2; 9; –3; 6 ответ — 2. //Несовсем понял, что требуется в данной задаче, написано сначало "кол-во пар, в которых только одно число делится на 3", //а далее описание пары где это "2 подряд элемента делящихся на 3". Сдела как по втрому варианту. static void Main(string[] args) { int n = 20; int[] arr = new int[n]; int x = 10000; int count = 0; Random rand = new Random(); MyMetods.Print($"Массив из {n} чисел от {-x} до {x}"); for (int i = 0; i < arr.Length; i++) { arr[i] = Convert.ToInt32(x * (rand.NextDouble() * 2 - 1)); Console.WriteLine($"{i} - {arr[i]}"); } Console.WriteLine(); //for (int i = 0; i < arr.Length; i++) //{ // Console.WriteLine($"{i} - {arr[i]%3}"); //} for (int i = 1; i < arr.Length; i++) { if (arr[i - 1] % 3 == 0 && arr[i] % 3 == 0) { count++; } //Console.WriteLine($"{i} - {arr[i]}"); } Console.WriteLine($"Количество пар, в которых 2 элемента подряд делятся на 3, равно - {count}"); MyMetods.Pause(); }
static void Main(string[] args) { /* 1. Написать программу «Анкета». Последовательно задаются вопросы (имя, фамилия, возраст, * рост, вес). В результате вся информация выводится в одну строчку: * а) используя склеивание; * б) используя форматированный вывод; * в) используя вывод со знаком $. */ #region //MyMetods cons = new MyMetods(); MyMetods.Print("Укажите Ваше имя."); string name = Console.ReadLine(); MyMetods.Print("Укажите Вашу фамилию."); string surName = Console.ReadLine(); MyMetods.Print("Укажите Ваш возраст."); uint age = MyMetods.ReadUint(); MyMetods.Print("Укажите Ваш вес в килограммах."); double weight = MyMetods.ReadDouble(); MyMetods.Print("Укажите Ваш рост в метрах."); double growth = MyMetods.ReadDouble(); //Вариант а Console.WriteLine("Вариант а.\nИмя: " + name + " Фамилия: " + surName + " Возраст: " + age + ", рост: " + growth + "м, вес: " + weight + "кг."); //Вариант б Console.WriteLine("Вариант б.\nИмя: {0} Фамилия: {1} Возраст: {2}, рост: {3}м, вес: {4}кг.", name, surName, age, growth, weight); //Вариант в Console.WriteLine($"Вариант в.\nИмя: {name} Фамилия: {surName} Возраст: {age}, рост: {growth}м, вес: {weight}кг."); MyMetods.Pause(); #endregion }
//2. Написать метод подсчета количества цифр числа. static void Main(string[] args) { MyMetods.Print("Введите целое положительное число."); long n = MyMetods.ReadLong(); Console.WriteLine($"Количкество чисел в числе {n} - {MyMetods.CountNumber(n)}."); MyMetods.Pause(); }
/*4. Реализовать метод проверки логина и пароля. * На вход метода подается логин и пароль. * На выходе истина, если прошел авторизацию, и ложь, если не прошел (Логин: root, Password: GeekBrains). * Используя метод проверки логина и пароля, написать программу: пользователь вводит логин и пароль, * программа пропускает его дальше или не пропускает. С помощью цикла do while ограничить ввод пароля тремя попытками.*/ static void Main(string[] args) { bool Autorization(string userLogin, string userPassword) { string login = "******"; string password = "******"; if (userLogin.ToLower() == login && userPassword == password) { return(true); } else { return(false); } } //string login = "******"; //string password = "******"; int count = 1; // 1 т.к. использован цикл do while int tryCount = 3; do { MyMetods.Print("Введите логин."); string userLogin = Console.ReadLine(); MyMetods.Print("Введите пароль."); string userPassword = Console.ReadLine(); if (Autorization(userLogin, userPassword)) { MyMetods.Print("Вы вошли в систему."); //count = trycount; break; } else { if (count == tryCount) { MyMetods.Print("Вы ввели неверный логин или пароль.\nВсе попытки использованы.\n"); } else { string str; if (tryCount - count == 2) { str = "ки"; } else { str = "ка"; } MyMetods.Print($"Вы ввели неверный логин или пароль.\nПопробуйте еще раз. У вас осталось {tryCount - count} попыт{str}.\n"); } } } while (count++ < tryCount); MyMetods.Pause(); }
//Ронжин Л. //5.*а) Реализовать библиотеку с классом для работы с двумерным массивом. //Реализовать конструктор, заполняющий массив случайными числами. //Создать методы, которые возвращают сумму всех элементов массива, //сумму всех элементов массива больше заданного, свойство, возвращающее минимальный элемент массива, //свойство, возвращающее максимальный элемент массива, метод, возвращающий номер //максимального элемента массива(через параметры, используя модификатор ref или out). // **б) Добавить конструктор и методы, которые загружают данные из файла и записывают данные в файл. // ** в) Обработать возможные исключительные ситуации при работе с файлами. //В целом все понятно, но по времени не все успел static void Main(string[] args) { ArrayLibrary arr = new ArrayLibrary(3, 4); arr.Print(); Console.WriteLine($"Сумма всех элементов массива - {arr.Sum()}"); int n = MyMetods.ReadInt("Введите число"); Console.WriteLine($"Сумма элементов массива, которые больше {n} - {arr.Sum(n)}"); Console.WriteLine($"Минимальный элемент массива - {arr.Min}"); Console.WriteLine($"Максимальный элемент массива - {arr.Max}"); MyMetods.Pause(); }
static void Main(string[] args) { MyMetods.Print("Введите первое число."); int a = MyMetods.ReadInt(); MyMetods.Print("Введите второе число."); int b = MyMetods.ReadInt(); Console.WriteLine($"От a до b: {MyMetods.RecPrint(a, b)}"); Console.WriteLine($"От a до b(вар 2): {MyMetods.RecPrintV2(a, b)}"); Console.WriteLine($"Сумма от a до b: {MyMetods.RecSum(a, b)}"); Console.WriteLine($"Сумма от a до b(вар 2): {MyMetods.RecSumV2(a, b)}"); MyMetods.Pause(); }
static void Main(string[] args) { /*2.Ввести вес и рост человека. Рассчитать и вывести индекс массы тела(ИМТ) по формуле * I = m / (h * h); где m — масса тела в килограммах, h — рост в метрах.*/ #region MyMetods.Print("Укажите Ваш вес в килограммах."); double weight = MyMetods.ReadDouble(); MyMetods.Print("Укажите Ваш рост в метрах."); double growth = MyMetods.ReadDouble(); double indexBodyMass = weight / (Math.Pow(growth, 2)); Console.WriteLine($"Ваш индекс массы тела (ИМТ), при росте {growth} и весе {weight}, составляет: {indexBodyMass}."); MyMetods.Pause(); #endregion }
//1. Написать метод, возвращающий минимальное из трёх чисел. static void Main(string[] args) { MyMetods.Print("Введите первое число."); double a = MyMetods.ReadDouble(); MyMetods.Print("Введите второе число."); double b = MyMetods.ReadDouble(); MyMetods.Print("Введите третье число."); double c = MyMetods.ReadDouble(); Console.WriteLine($"Максимальное число из {a}, {b} и {c} - {MyMetods.MaxNumber(a, b, c)}."); Console.WriteLine($"Минимальное число из {a}, {b} и {c} - {MyMetods.MinNumber(a, b, c)}."); MyMetods.Pause(); }
static void Main(string[] args) { #region double defIMB = 18.5; //верхний придел ИМТ при дефиците double normIMB = 25; //верхний придел ИМТ при норме double excIMB = 30; // верхний придел ИМТ при избыт. массе тела double obesity1IMB = 35; //верхний придел ИМТ при ожирении 1ст double obesity2IMB = 40; //верхний придел ИМТ при ожирении 2ст, все что выше ожирение 3ст MyMetods.Print("Укажите Ваш вес в килограммах."); double weight = MyMetods.ReadDouble(); MyMetods.Print("Укажите Ваш рост в метрах."); double growth = MyMetods.ReadDouble(); double indexBodyMass = weight / (Math.Pow(growth, 2)); if (indexBodyMass < defIMB) { MyMetods.Print("У Вас дефицит массы тела."); ChangeMass(normIMB, defIMB, weight, growth); } else if (indexBodyMass >= defIMB && indexBodyMass < normIMB) { MyMetods.Print("У Вас нормальная масса тела."); } else if (indexBodyMass >= normIMB && indexBodyMass < excIMB) { MyMetods.Print("У Вас избыточная масса тела."); ChangeMass(normIMB, defIMB, weight, growth); } else if (indexBodyMass >= excIMB && indexBodyMass < obesity1IMB) { MyMetods.Print("У Вас ожирение | степени."); ChangeMass(normIMB, defIMB, weight, growth); } else if (indexBodyMass >= obesity1IMB && indexBodyMass < obesity2IMB) { MyMetods.Print("У Вас ожирение || степени."); ChangeMass(normIMB, defIMB, weight, growth); } else { MyMetods.Print("У Вас ожирение ||| степени."); ChangeMass(normIMB, defIMB, weight, growth); } #endregion MyMetods.Pause(); }
static void Main(string[] args) { DateTime start = DateTime.Now; int count = 0; for (int i = 1; i <= 1000000000; i++) { if (i % MyMetods.SumNumber(i) == 0) { count++; } } Console.WriteLine($"Количество хороших чисел в диапазоне от 1 до 1000 000 000 составляет {count}."); Console.WriteLine($"Время на выполнение программы: {DateTime.Now - start}."); MyMetods.Pause(); }
//Ронжин Л. //1. а) Дописать структуру Complex, добавив метод вычитания комплексных чисел.Продемонстрировать работу структуры. //б) Дописать класс Complex, добавив методы вычитания и произведения чисел.Проверить работу класса. //в) Добавить диалог с использованием switch демонстрирующий работу класса. static void Main(string[] args) { string mes1 = "Введите вещественную часть 1го числа"; string mes2 = "Введите мнимую часть 1го числа"; Complex complex1 = new Complex(MyMetods.ReadInt(mes1), MyMetods.ReadInt(mes2)); //Console.WriteLine(complex1); mes1 = "Введите вещественную часть 2го числа"; mes2 = "Введите мнимую часть 2го числа"; Complex complex2 = new Complex(MyMetods.ReadInt(mes1), MyMetods.ReadInt(mes2)); //Console.WriteLine(complex2); Complex rez; MyMetods.Print($"У Вас есть 2 комплексных числа {complex1} и {complex1}.\n" + $"Вы можете их сложить, найти их разницу или умножить.\n" + $"Введите соответствующий символ.\n" + $"\"+\" - для сложения,\n\"-\" - для нахождения разницы,\n\"*\" - для умножения."); string sym = Console.ReadLine(); switch (sym) { case "+": rez = Complex.Sum(complex1, complex2); Console.WriteLine($"({complex1}) {sym} ({complex2}) = {rez}"); break; case "-": rez = Complex.Subtraction(complex1, complex2); Console.WriteLine($"({complex1}) {sym} ({complex2}) = {rez}"); break; case "*": rez = Complex.Multi(complex1, complex2); Console.WriteLine($"({complex1}) {sym} ({complex2}) = {rez}"); break; default: MyMetods.Print("Вы выбрали несуществующее действие, программа ничего не выполнила."); break; } MyMetods.Pause(); }
static void Main(string[] args) { /*5.а) Написать программу, которая выводит на экран ваше имя, фамилию и город проживания. * б) *Сделать задание, только вывод организовать в центре экрана. * в) **Сделать задание б с использованием собственных методов (например, Print(string ms, int * x,int y).*/ #region MyMetods.Print("Леонид Ронжин, город Санкт-Петербург."); int row = Console.CursorTop; Console.SetCursorPosition(40, ++row); MyMetods.Print("Леонид Ронжин, город Санкт-Петербург."); MyMetods.Print("Леонид Ронжин, город Санкт-Петербург.", 40, row += 2); MyMetods.Print("Леонид Ронжин, город Санкт-Петербург.", 40, row += 2, ConsoleColor.Red); MyMetods.Pause(); #endregion }
//3. С клавиатуры вводятся числа, пока не будет введен 0. Подсчитать сумму всех нечетных положительных чисел. static void Main(string[] args) { MyMetods.Print("Введите целое число."); int n = MyMetods.ReadInt(); int sum = 0; do { if (n > 0 && (n % 2 != 0)) { sum += n; } MyMetods.Print("Введите следующее число."); n = MyMetods.ReadInt(); }while (n != 0); Console.WriteLine($"Сумма всех нечетных положительных чисел введенных с клавиатуры - {sum}."); MyMetods.Pause(); }
//Ронжин Л. //4.Решить задачу с логинами из урока 2, только логины и пароли считать из файла в массив. //Создайте структуру Account, содержащую Login и Password. static void Main(string[] args) { string[,] arr = Account.ReadFile("LoginPass.txt"); int count = 1; // 1 т.к. использован цикл do while int tryCount = 3; do { MyMetods.Print("Введите логин."); string userLogin = Console.ReadLine(); MyMetods.Print("Введите пароль."); string userPassword = Console.ReadLine(); if (Account.Autorization(userLogin, userPassword)) { MyMetods.Print("Вы вошли в систему."); //count = trycount; break; } else { if (count == tryCount) { MyMetods.Print("Вы ввели неверный логин или пароль.\nВсе попытки использованы.\n"); } else { string str; if (tryCount - count == 2) { str = "ки"; } else { str = "ка"; } MyMetods.Print($"Вы ввели неверный логин или пароль.\nПопробуйте еще раз. У вас осталось {tryCount - count} попыт{str}.\n"); } } } while (count++ < tryCount); MyMetods.Pause(); }
//Ронжин Л. //2. а) С клавиатуры вводятся числа, пока не будет введён 0 (каждое число в новой строке). //Требуется подсчитать сумму всех нечётных положительных чисел. //Сами числа и сумму вывести на экран, используя tryParse. //б) Добавить обработку исключительных ситуаций на то, что могут быть введены некорректные данные. // При возникновении ошибки вывести сообщение.Напишите соответствующую функцию; static void Main(string[] args) { // Пункт б как я понимаю был выполнен еще на 1м уроке, где я заранее использовал tryParse MyMetods.Print("Введите целое число."); int n = MyMetods.ReadInt(); int sum = 0; string str = n.ToString(); do { if (n > 0 && (n % 2 != 0)) { sum += n; } MyMetods.Print("Введите следующее число."); n = MyMetods.ReadInt(); str = str + ", " + n.ToString(); }while (n != 0); Console.WriteLine($"Сумма всех нечетных положительных чисел из ряда: {str} составляет {sum}."); MyMetods.Pause(); }
//Ронжин Л. //3. *Для двух строк написать метод, определяющий, является ли одна строка перестановкой другой. //Например: //badc являются перестановкой abcd. static void Main(string[] args) { Console.WriteLine("Для выхода из цикла введите \"stop\""); while (true) { Console.Write("Введите первую строку: "); string str1 = Console.ReadLine(); Console.Write("Введите вторую строку: "); string str2 = Console.ReadLine(); if (str1.ToLower() == "stop" || str2.ToLower() == "stop") { break; } Console.Write("Способ 1: "); Console.WriteLine(StringComp(str1, str2) ? "Строки зеркальны" : "Строки не зеркальны"); Console.Write("Способ 2: "); Console.WriteLine(str1 == ReverseStringBuilder(str2) ? "Строки зеркальны" : "Строки не зеркальны"); } MyMetods.Pause(); }
static void Main(string[] args) { MyList my = new MyList(1, 3, 5); for (int i = 0; i < my.Count; i++) { Console.WriteLine($"{i} - {my[i]}"); } Console.WriteLine($"Сумма элементов массива - {my.Sum}"); Console.WriteLine("Инверсия."); int[] arr = my.Inverse(my.Count); for (int i = 0; i < arr.Length; i++) { Console.WriteLine($"{i} - {arr[i]}"); } Console.WriteLine("Умноение массива на число."); my.Multi(-2); for (int i = 0; i < my.Count; i++) { Console.WriteLine($"{i} - {my[i]}"); } MyList my2 = new MyList(); my2.Add(2, -3, 5, 7, 11, 23, 17, 19, 23); Console.WriteLine($"Кол-во максимальных элементов массива - {my2.MaxCount}"); Console.WriteLine(); Console.WriteLine("Подсчет количества вхождений."); int[] counter = new int[my2.Max + 1]; for (int i = 0; i < my2.Count; i++) { int index = my2[i]; counter[index]++; } for (int i = 0; i < counter.Length; i++) { Console.WriteLine($"{i} - {counter[i]}"); } MyMetods.Pause(); }
static void Main(string[] args) { /*3.а) Написать программу, которая подсчитывает расстояние между точками с координатами x1, * y1 и x2,y2 по формуле r=Math.Sqrt(Math.Pow(x2-x1,2)+Math.Pow(y2-y1,2). Вывести результат, * используя спецификатор формата .2f (с двумя знаками после запятой); * б) *Выполнить предыдущее задание, оформив вычисления расстояния между точками в виде * метода.*/ #region MyMetods.Print("Укажите координату X1."); double x1 = MyMetods.ReadDouble(); MyMetods.Print("Укажите координату Y1."); double y1 = MyMetods.ReadDouble(); MyMetods.Print("Укажите координату X2."); double x2 = MyMetods.ReadDouble(); MyMetods.Print("Укажите координату Y2."); double y2 = MyMetods.ReadDouble(); double r = Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2)); Console.WriteLine($"Вариант а.\nРасстояние между точками составляет : {r:f}."); Console.WriteLine($"Вариант б.\nРасстояние между точками составляет : {MyMetods.distance(x1, y1, x2, y2):f}."); MyMetods.Pause(); #endregion }
static void Main(string[] args) { /*4. Написать программу обмена значениями двух переменных: * а) с использованием третьей переменной; */ #region MyMetods.Print("Вариант а.\nУкажите 1ю переменную."); int a = MyMetods.ReadInt(); MyMetods.Print("Укажите 2ю переменную."); int b = MyMetods.ReadInt(); int c; c = a; a = b; b = c; Console.WriteLine($"Первая переменная: {a}.\nВторая переменная: {b}."); /* б) *без использования третьей переменной. */ MyMetods.Print("\nВариант б. Те же значения обратно."); a = a + b; b = a - b; a = a - b; Console.WriteLine($"Первая переменная: {a}.\nВторая переменная: {b}."); MyMetods.Pause(); #endregion }
//Сергей, вопрос, как сделать, чтобы регулярное выражение сравнивало целиком строку, //а не искало соответствие в ней? Добавил якоря ^ и $, но тогда не отслеживается длинна строки. //Как быть в данном случае? разбивать сравнение на этапы и добавлять условие проверки длинны отдельно? //Ронжин Л. //1. Создать программу, которая будет проверять корректность ввода логина.Корректным логином будет строка от 2 до 10 символов, //содержащая только буквы латинского алфавита или цифры, при этом цифра не может быть первой: // а) без использования регулярных выражений; // б) **с использованием регулярных выражений. static void Main(string[] args) { Regex myReg = new Regex(@"^[A-Za-z]+[A-Za-z0-9]{1,9}$"); Console.WriteLine("Для выхода из цикла введите \"stop\""); while (true) { Console.Write("Введите логин: "); string login = Console.ReadLine(); if (login.ToLower() == "stop") { break; } Console.Write("Способ а: "); Console.WriteLine(LoginVerification(login) ? "Логин верный":"Логин не верный"); Console.Write("Способ б вариант 1: "); Console.WriteLine(LoginVerificationReg(login) ? "Логин верный" : "Логин не верный"); Console.Write("Способ б вариант 2: "); Console.WriteLine(LoginVerificationRegV2(login) ? "Логин верный" : "Логин не верный"); Console.Write("Способ б вариант 3: "); Console.WriteLine(myReg.IsMatch(login) ? "Логин верный" : "Логин не верный"); } MyMetods.Pause(); }
static void Main(string[] args) { int bakalavr = 0; int magistr = 0; List <Student> list = new List <Student>(); // Создаем список студентов DateTime dt = DateTime.Now; StreamReader sr = new StreamReader("students_6.csv"); while (!sr.EndOfStream) { try { string[] s = sr.ReadLine().Split(';'); // Добавляем в список новый экземпляр класса Student list.Add(new Student(s[0], s[1], s[2], s[3], s[4], int.Parse(s[5]), int.Parse(s[6]), int.Parse(s[7]), s[8])); // Одновременно подсчитываем количество бакалавров и магистров if (int.Parse(s[6]) < 5) { bakalavr++; } else { magistr++; } } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine("Ошибка!ESC - прекратить выполнение программы"); // Выход из Main if (Console.ReadKey().Key == ConsoleKey.Escape) { return; } } } sr.Close(); Console.WriteLine("Всего студентов:" + list.Count); Console.WriteLine("Магистров:{0}", magistr); Console.WriteLine("Бакалавров:{0}", bakalavr); Console.WriteLine(); Console.WriteLine("Количество студентов в возрасте от 18 до 20 лет, на каждом курсе:"); list.Sort(new Comparison <Student>(MyDelegatСourse)); Dictionary <int, int> StodentOfCourse = new Dictionary <int, int>(); foreach (var item in list) { int count; if (item.age >= 18 && item.age <= 20) { if (StodentOfCourse.TryGetValue(item.course, out count)) { StodentOfCourse[item.course] = ++count; } else { StodentOfCourse.Add(item.course, 1); } } } foreach (KeyValuePair <int, int> item in StodentOfCourse) { Console.WriteLine($"{item.Key} курс - {item.Value}"); } Console.WriteLine(); Console.WriteLine("Список студентов по возрасту:"); list.Sort(new Comparison <Student>(MyDelegatAge)); foreach (var v in list) { Console.WriteLine(v.firstName + " - " + v.age); } Console.WriteLine(DateTime.Now - dt); Console.WriteLine(); Console.WriteLine("Список студентов по курсу и возрасту:"); list.Sort(new Comparison <Student>(MyDelegatСourseAge)); foreach (var v in list) { Console.WriteLine(v.firstName + " - " + v.course + " - " + v.age); } Console.WriteLine(DateTime.Now - dt); MyMetods.Pause(); }