예제 #1
0
        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
0
        //Ронжин Л.
        //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();
        }
예제 #3
0
        //Сергей есть ли какой либо способ сортировки коллкции по значению? я использовал 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();
        }
예제 #4
0
        //Ронжин Л.
        //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();
        }
예제 #5
0
        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();
        }
예제 #6
0
        //Сергей при частотном анализе через класс 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();
        }
예제 #7
0
        //Ронжин Л.
        //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();
        }
예제 #8
0
        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
        }
예제 #9
0
        //2. Написать метод подсчета количества цифр числа.
        static void Main(string[] args)
        {
            MyMetods.Print("Введите целое положительное число.");
            long n = MyMetods.ReadLong();

            Console.WriteLine($"Количкество чисел в числе {n} - {MyMetods.CountNumber(n)}.");
            MyMetods.Pause();
        }
예제 #10
0
        /*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();
        }
예제 #11
0
        //Ронжин Л.
        //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();
        }
예제 #12
0
        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();
        }
예제 #13
0
 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
 }
예제 #14
0
        //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();
        }
예제 #15
0
        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();
        }
예제 #16
0
        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();
        }
예제 #17
0
        //Ронжин Л.
        //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();
        }
예제 #18
0
        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
        }
예제 #19
0
        //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();
        }
예제 #20
0
        //Ронжин Л.
        //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();
        }
예제 #21
0
        //Ронжин Л.
        //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();
        }
예제 #22
0
        //Ронжин Л.
        //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();
        }
예제 #23
0
        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();
        }
예제 #24
0
 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
 }
예제 #25
0
        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
        }
예제 #26
0
        //Сергей, вопрос, как сделать, чтобы регулярное выражение сравнивало целиком строку,
        //а не искало соответствие в ней? Добавил якоря ^ и $, но тогда не отслеживается длинна строки.
        //Как быть в данном случае? разбивать сравнение на этапы и добавлять условие проверки длинны отдельно?

        //Ронжин Л.
        //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();
        }
예제 #27
0
        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();
        }