コード例 #1
0
ファイル: Program.cs プロジェクト: Maxyber/C_sharp_lvl1_1
        // запрашиваем у пользователя данные для построения таблицы функции
        public static void FunctionConstruct(Fun[] funcArray)
        {
            PrintMessage("Выберите функцию для определения минимума: \n1. (x*y)^2, \n2. Sqrt(x) + Sqrt(y), \n3.x * Sin(y)");
            int i = Maxyber.Ask(0);

            PrintMessage("Введите последовательно числа a, b, y, где a и b - границы интервала функции, а y - любое число");
            double a   = Maxyber.Ask(0.1);
            double b   = Maxyber.Ask(0.1);
            double y   = Maxyber.Ask(0.1);
            double min = FuncMinimum(funcArray[i - 1], a, b, y);

            if (funcArray.Length > i - 1)
            {
                Table(funcArray[i - 1], a, b, y);
                PrintMessage($"Минимум функции на интервале от {a} до {b}, полученный через метод расчета минимума составляет: {min}");
                Save("data/data.bin", funcArray[i - 1], a, b, y);
                double[][] aray = Load("data/data.bin", out double minimum);
                PrintMessage($"Минимум функции на интервале от {a} до {b}, полученный через метод Load с парметром out составляет: {minimum}");
            }
            else
            {
                PrintMessage("Неведомая ошибка");
            }
            Pause();
        }
コード例 #2
0
        static public void TDArrayDemo()
        {
            TDArray myArray = new TDArray();

            myArray.Fill(10, 10, 1, 1000);
            myArray.Print();
            Maxyber.ConsolePrint("Заполнили двумерный массив размерностью 10 на 10 случайными числами от 1 до 999, вывели на печать.");
            int sum = SumAll(myArray);

            Console.WriteLine($"Array summ: {sum}");
            Console.WriteLine($"MinValue: {myArray.MinValue("Value")}, MinValue coordinates: {myArray.MinValue("Coord")}");
            Console.WriteLine($"MaxValue: {myArray.MaxValue("Value")}, MaxValue coordinates: {myArray.MaxValue("Coord")}");
            Maxyber.ConsolePrint("Посчитали сумму всех элементов массива, значение и координаты минимального и максимального элемента массива");
            Console.Clear();
            TDArray my2Array = new TDArray();
            string  path     = "../../data/tdarray.txt";

            my2Array.ReadFromFile(path);
            Maxyber.ConsolePrint("Считали двумерный массив из файла data/tdarray.txt, в случае отсутствия файла программа сообщит об этом и остановит выполнение");
            Console.Clear();
            string path2 = "../../data/tdarrayrw.txt";

            my2Array.WriteToFile(path2);
            Maxyber.ConsolePrint("Записали двумерный массив в файл data/tdarrayrw.txt, в случае, если файл уже есть предлагается его перезаписать или сразу выйти из программы");
            Console.Clear();
        }
コード例 #3
0
        static public MassiveClass ReadFile(string path, char separator = ' ')
        {
            MassiveClass result = new MassiveClass();
            string       str    = "";
            bool         flag;
            int          x, resIndex = 0;

            str = Maxyber.FileToString(path);
            string[] strMas = str.Split(separator);
            for (int i = 1; i < strMas.Length; i++)
            {
                do
                {
                    flag = int.TryParse(strMas[i], out x);
                    if (flag == true)
                    {
                        result.Set(resIndex, strMas[i]);
                        resIndex++;
                        if (resIndex >= result.GetLength)
                        {
                            result.Resize();
                        }
                    }
                    else
                    {
                        i++;
                    }
                } while ((flag != true) && (i < strMas.Length));
            }
            return(result);
        }
コード例 #4
0
        // метод задачи №2
        static public void MessageProgram()
        {
            Console.Write("Введите текстовое сообщение с любым количеством слов: ");
            // Message msg = new Message("лето солнце тесто жара чай снег осень зима");
            Message msg = new Message(Console.ReadLine()); // создаем объект Message

            Console.WriteLine("Вы ввели сообщение: " + msg.ToString());
            Console.Write("Введите максимальное количество букв из которых должно состоять слово: ");
            int count = Maxyber.Ask(0); // запрашиваем число букв

            msg.PrintWords(count);
            Console.Write("Введите символ, на который заканчиваются слова для удаления: ");
            char uChar = Maxyber.Ask(' '); // запрашиваем символ, на которое заканчивается слово

            msg.WordDeleteLC(uChar);       // удаляем слова из последовательности
            msg.Print();
            Console.WriteLine($"Самое длинное слово сообщения - \"{msg.Longest()}\", его длина {msg.Longest().Length} символов");
            StringBuilder sb = new StringBuilder();

            sb = msg.SBLongest(); // формируем последовательность из самых длинных слов с помощью StrinBuilder
            Console.WriteLine("Строка StrinBuilder: " + sb.ToString());
            Maxyber.ConsolePause();
            Dictionary <string, int> dict = new Dictionary <string, int>();

            string[] uWords = { "солнце", "небо", "луна" }; // задаем массив слов, по которым необходимо создать частотный массив
            string   uText  = "Солнце взошло утром, небо было чистое, луна ушла вниз к земле, солнце никак не хотело двигаться, небо покрылось облаками, а луна была одинока, солнце - это наше все";

            dict = FreqAnalise(uWords, uText);

            foreach (KeyValuePair <string, int> key in dict)
            {
                Console.WriteLine(key.ToString());
            }
            Maxyber.ConsolePause();
        }
コード例 #5
0
        public Complex AskNumber()
        {
            Complex result = new Complex();

            Console.Write("Введите действительную часть комплексного числа: ");
            result.re = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите мнимую часть комплексного числа без \"i\": ");
            result.im = Convert.ToInt32(Console.ReadLine());
            Maxyber.ConsolePrint("Вы ввели число: " + result.ToString());
            return(result);
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: Maxyber/C_sharp_lvl1_1
 // Создаем метод, который принимает делегат
 // На практике этот метод сможет принимать любой метод
 // с такой же сигнатурой, как у делегата
 public static void Table(Fun F, double x, double b, double y)
 {
     Console.WriteLine("- X -------- Y -------- f(x,y) ---");
     while (x <= b)
     {
         Console.WriteLine("| {0,8:0.000} | {1,8:0.000} | {2,8:0.000} |", x, y, F(x, y));
         x += 1;
     }
     Console.WriteLine("---------------------");
     Maxyber.ConsolePause();
 }
コード例 #7
0
ファイル: Program.cs プロジェクト: Maxyber/C_sharp_lvl1_1
 // запрашиваем у пользователя три значения для построения функции и записываем в массив переменных
 public static double[] AskVars()
 {
     double[] funcVars = new double[3];
     do
     {
         PrintMessage("Введите три переменных типа double (значения от а до b (a < b) и у для построения таблицы функции вида f(x[a,b],y)");
         for (int i = 0; i < 3; i++)
         {
             funcVars[i] = Maxyber.Ask(0.0);
         }
     } while (funcVars[1] < funcVars[0]);
     return(funcVars);
 }
コード例 #8
0
ファイル: Program.cs プロジェクト: Maxyber/C_sharp_lvl1_1
        // int temp = new Random().Next(5);
        static void Main(string[] args)
        {
            // Задание №4. Реализовать метод проверки логина и пароля. На вход метода подается логин и пароль. На выходе истина, если прошел авторизацию, и ложь, если не прошел (Логин: root, Password: GeekBrains).
            // Используя метод проверки логина и пароля, написать программу: пользователь вводит логин и пароль, программа пропускает его дальше или не пропускает. С помощью цикла do while ограничить ввод пароля тремя попытками.
            Console.Clear();
            Maxyber.UserLogPassTry(3);

            // задание №3. С клавиатуры вводятся числа, пока не будет введен 0. Подсчитать сумму всех нечетных положительных чисел.

            int[] NumArray = Maxyber.InputIntArray(); // вызывает мето заполнения массива числами, введенными с клавиатуры
            Maxyber.SummArray(NumArray);              // вызывает метод подсчета суммы положительных нечетных чисел

            // задание №1. Написать метод, возвращающий минимальное из трёх чисел.
            // int[] nums = new int[4] { 20, 30, 10, 40 }; изначально в задании необходимо было найти минимальное число из чисел известного массива, задача была расширена после выполнения задания №3
            int min = Maxyber.minNumber(NumArray);

            Maxyber.ConsolePrint("Минимальное число в введенном ранее массиве: " + min);

            // задание №2. Написать метод подсчета количества цифр числа.
            Console.Clear();
            long number = Maxyber.ConsoleRequestNumber("Введите любое целое число: ");
            long result = Maxyber.CalcNumberChars(number);

            Maxyber.ConsolePrint("сумма цифр числа: " + result);

            // Задание №5.  а) Написать программу, которая запрашивает массу и рост человека, вычисляет его индекс массы и сообщает, нужно ли человеку похудеть, набрать вес или всё в норме.
            //              б) *Рассчитать, на сколько кг похудеть или сколько кг набрать для нормализации веса. Нормой ИМТ считается интервал от 18,5 до 24,99.
            Console.Clear();
            double userIMT = Maxyber.CalcIMT(); // вызов функции рассчета индекса массы тела

            Maxyber.ConsolePrint("Индекс массы тела: " + userIMT);

            // Задание №6. *Написать программу подсчета количества «Хороших» чисел в диапазоне от 1 до 1 000 000 000. Хорошим называется число, которое делится на сумму своих цифр.
            // Реализовать подсчет времени выполнения программы, используя структуру DateTime.
            Console.Clear();
            Console.WriteLine("Максимальная граница диапазона, в котором считать количество \"хороших\" числел: ");
            long maxGoodNumsLine = Convert.ToInt64(Console.ReadLine());
            int  countGoodNums   = Maxyber.CalcGoodNumbers(maxGoodNumsLine);

            Maxyber.ConsolePrint("Количество \"хороших\" чисел в интервале от 1 до " + maxGoodNumsLine + " равно - " + countGoodNums);

            // Задание №7. a) Разработать рекурсивный метод, который выводит на экран числа от a до b (a<b);
            // б) *Разработать рекурсивный метод, который считает сумму чисел от a до b.
            int[] userNums = new int[2];
            userNums = Maxyber.AskRecursiveNums();
            Console.WriteLine("Числовой ряд от " + userNums[0] + " до " + userNums[1]);
            Console.WriteLine(Maxyber.RecursionNumbers(userNums[0], userNums[1]));
            Console.WriteLine("Сумма чисел от " + userNums[0] + " до " + userNums[1]);
            Console.WriteLine(Maxyber.RecursionSumNumbers(userNums[0], userNums[1]));
            Maxyber.ConsolePause();
        }
コード例 #9
0
        static public void ClassArrayDemo()
        {
            MassiveClass userMassive = new MassiveClass();

            userMassive.Fill(20, -10000, 10000);
            userMassive.Print();
            Maxyber.ConsolePrint("Массив заполненный случайными числами через метод класса массивов, 20 элементов от -10 000 до 10 000");
            int pairs = MassiveClass.Pair(userMassive, 2);

            Maxyber.ConsolePrint("Количество пар в массиве, одно из чисел в которых делится на 3 без остатка");
            Console.Clear();
            MassiveClass arrayFileMassive = new MassiveClass();

            arrayFileMassive = MassiveClass.ReadFile("../../data/arrayspec.txt");
            arrayFileMassive.Print();
            Maxyber.ConsolePrint("Заполнили массив из файла data/arrayspec.txt и вывели на экран консоли");
            Console.Clear();
            // Задача №3
            MassiveClass newMassive = new MassiveClass();

            newMassive.FillOrder(30, 1, 3); // заполнение массива числами в количестве 30 элементов от 1 с шагом 3
            newMassive.Print();
            Console.WriteLine("Сумма элементов массива: " + newMassive.Sum());
            Maxyber.ConsolePrint("Заполнили массив количеством 30 элементов с началом 1 и шагом 3, далее вывели его на печать и посчитали сумму элементов массива");
            MassiveClass new2Massive = new MassiveClass();

            new2Massive = newMassive.Inverse();
            new2Massive.Print();
            Console.WriteLine("Сумма элементов массива: " + new2Massive.Sum());
            Maxyber.ConsolePrint("Инвертировали предыдущий массив и вывели его на печать, посчитав сумму всех лементов");
            new2Massive.Multi(-1);
            new2Massive.Print();
            Maxyber.ConsolePrint("Умножили все элементы последнего массива на -1 и вывели его на печать");
            Console.Clear();
            MassiveClass new3Massive = new MassiveClass();

            new3Massive.Fill(50, 1, 11);
            new3Massive.Print();
            Console.WriteLine("Количество максимальных элементов массива:" + new3Massive.MaxCount());
            Maxyber.ConsolePrint("Заполнили массив количеством 50 элементов случайными числами от 1 до 10, далее вывели количество максимальных значений в нем");
            Console.Clear();
            MassiveClass userMassiveDict = new MassiveClass();

            userMassiveDict.Fill(200, 1, 10);
            userMassiveDict.Print();
            Dictionary(userMassiveDict);
            Maxyber.ConsolePrint("Заполнили массив количеством 200 элементов случайными числами от 1 до 10, после чего вывели его на экран и создали словарь<int><int>, " +
                                 "который содержит информацию о том, сколько раз входит в массив каждый из элементов");
            Console.Clear();
        }
コード例 #10
0
        static void Main(string[] args)
        {
            // Задание №1. Дан  целочисленный  массив  из 20 элементов.  Элементы  массива  могут принимать  целые  значения  от –10 000 до 10 000 включительно.
            // Заполнить случайными числами.  Написать программу, позволяющую найти и вывести количество пар элементов массива, в которых только одно число делится на 3.
            // В данной задаче под парой подразумевается два подряд идущих элемента массива. Например, для массива из пяти элементов: 6; 2; 9; –3; 6 ответ — 2.

            Massive();

            // Задание №2. Реализуйте задачу 1 в виде статического класса StaticClass;
            // а) Класс должен содержать статический метод, который принимает на вход массив и решает задачу 1;
            // б) *Добавьте статический метод для считывания массива из текстового файла. Метод должен возвращать массив целых чисел;
            // в)**Добавьте обработку ситуации отсутствия файла на диске.

            // Задание №3. а) Дописать класс для работы с одномерным массивом.Реализовать конструктор, создающий массив определенного размера и заполняющий массив
            //числами от начального значения с заданным шагом.Создать свойство Sum, которое возвращает сумму элементов массива,
            // метод Inverse, возвращающий новый массив с измененными знаками у всех элементов массива(старый массив, остается без изменений),
            // метод Multi, умножающий каждый элемент массива на определённое число, свойство MaxCount, возвращающее количество максимальных элементов.
            // б)**Создать библиотеку содержащую класс для работы с массивом.Продемонстрировать работу библиотеки
            // е) ***Подсчитать частоту вхождения каждого элемента в массив(коллекция Dictionary< int,int>)

            ClassArrayDemo();

            // Задание №4. Решить задачу с логинами из урока 2, только логины и пароли считать из файла в массив.Создайте структуру Account, содержащую Login и Password.

            Account account = new Account();

            account.ReadFile("../../data/login.txt", ref account);
            if (account.Check(account) == true)
            {
                Maxyber.ConsolePrint("Пароль принят.");
            }
            else
            {
                Maxyber.ConsolePrint("Пароль введен неверно");
            }
            Maxyber.ConsolePrint("Считали логин, пароль и название аккаунта из файла data/login.txt и предложили пользователю пройти проверку");
            Console.Clear();

            // Задание №5. а) Реализовать библиотеку с классом для работы с двумерным массивом.Реализовать конструктор, заполняющий массив случайными числами.
            // Создать методы, которые возвращают сумму всех элементов массива, сумму всех элементов массива больше заданного, свойство,
            // возвращающее минимальный элемент массива, свойство, возвращающее максимальный элемент массива, метод, возвращающий номер
            // максимального элемента массива(через параметры, используя модификатор ref или out).
            // **б) Добавить конструктор и методы, которые загружают данные из файла и записывают данные в файл.
            // ***в) Обработать возможные исключительные ситуации при работе с файлами.

            TDArrayDemo();

            Maxyber.ConsolePrint("Домашнее задание полностью выполнено");
        }
コード例 #11
0
        public static void FractionsCalc(Fractions number1, Fractions number2) // метод, выполняющий выбранную операцию с двумя дробями
        {
            string userProcedure = "";

            do
            {
                Console.WriteLine("Введите необходимы тип операции с комплексными числами (+/сложение, -/вычитание, */умножение или произведение, / или деление), введите \"exit\" для выхода");
                userProcedure = Console.ReadLine();
                Fractions newResult = new Fractions();

                switch (userProcedure)
                {
                case "+":
                case "сложение":
                    newResult = number1.Plus(number2);
                    Maxyber.ConsolePrint(number1.ToString() + " + " + number2.ToString() + " = " + newResult.ToString());
                    break;

                case "-":
                case "вычитание":
                    newResult = number1.Minus(number2);
                    Maxyber.ConsolePrint(number1.ToString() + " - " + number2.ToString() + " = " + newResult.ToString());
                    break;

                case "*":
                case "умножение":
                case "произведение":
                    newResult = number1.Multi(number2);
                    Maxyber.ConsolePrint(number1.ToString() + " * " + number2.ToString() + " = " + newResult.ToString());
                    break;

                case "/":
                case "деление":
                    newResult = number1.Division(number2);
                    Maxyber.ConsolePrint(number1.ToString() + " / " + number2.ToString() + " = " + newResult.ToString());
                    break;

                case "exit":
                    Maxyber.ConsolePrint("Спасибо за пользование калькулятором комплексных чисел. Всего доброго.");
                    return;

                default:
                    Maxyber.ConsolePrint("Тип операции выбран неверно");
                    break;
                }
            } while (userProcedure != "exit");
        }
コード例 #12
0
        public double deno; // denominator = знаменатель

        public Fractions AskNumber()
        {
            Fractions result = new Fractions();

            Console.Write("Введите числитель: ");
            result.no = Maxyber.AskInteger();
            Console.Write("Введите знаменатель: ");
            do
            {
                result.deno = Maxyber.AskInteger();
                if (result.deno == 0)
                {
                    Console.WriteLine("Знаменатель дроби не может быть равным нулю, повторите ввод.");
                }
            } while (result.deno == 0);
            return(result);
        }
コード例 #13
0
        // прочие методы
        // загрузка таблицы учащихся с баллами по ЕГЭ
        public static Students[] ReadScoreFile(string path)
        {
            string text = Maxyber.FileToString(path);

            string[] textArr = text.Split('\n');
            int.TryParse(textArr[0], out int x);
            Students[] studentList = new Students[x];

            for (int i = 0; i < studentList.Length; i++)
            {
                studentList[i] = new Students();
                string[] ta = new string[5];
                ta = textArr[i + 1].Split(' ');
                studentList[i].Add(ta[0], ta[1], int.Parse(ta[2]), int.Parse(ta[3]), int.Parse(ta[4]));
                studentList[i].Print();
            }
            return(studentList);
        }
コード例 #14
0
        // задача на перестаноку
        public static void Exchanging()
        {
            bool flag = true;
            int  x;

            Console.WriteLine("введите последовательно две строки");
            string str1 = Console.ReadLine();
            string str2 = Console.ReadLine();

            if (str1.Length != str2.Length)
            {
                Console.WriteLine("Строки имеют разную длину и не могут быть перестановкой");
            }
            else
            {
                // создаем по одному словарю для каждой строки
                Dictionary <char, int> dict1 = new Dictionary <char, int>();
                Dictionary <char, int> dict2 = new Dictionary <char, int>();
                dict1 = MakeStrDictionary(str1);
                dict2 = MakeStrDictionary(str2);
                foreach (KeyValuePair <char, int> key in dict1)
                {
                    dict2.TryGetValue(key.Key, out x);
                    if (!dict2.ContainsKey(key.Key))
                    {
                        Console.WriteLine("В словаре 1 найден символ, которого нет в словаре 2. Строки не являются перестановкой");
                        flag = false;
                        break;
                    }
                    else if (key.Value != x)
                    {
                        Console.WriteLine($"Количество вхождений символа {key.Key} в словарях 1 и 2 различается ({key.Value} и {x})");
                        flag = false;
                        break;
                    }
                }
                if (flag)
                {
                    Console.WriteLine($"Строки \"{str1}\" и \"{str2}\" являются перестановкой");
                }
            }
            Maxyber.ConsolePause();
        }
コード例 #15
0
        static public void Massive()
        {
            int[] intArray = new int[20];
            intArray = Maxyber.RandArray(-10000, 10000, 20); // создание массива случайных чисел
            Maxyber.ConsolePrintArray(intArray);             // вывод массива случайных чисел на экран

            int pairCount = 0;

            for (int i = 0; i < intArray.Length - 2; i++)
            {
                if (((intArray[i] % 3 == 0) || (intArray[i + 1] % 3 == 0)) && ((intArray[i] % 3) != (intArray[i + 1])))
                {
                    pairCount++;
                    Console.WriteLine("Пара чисел " + intArray[i] + " и " + intArray[i + 1] + " удовлетворяет условию.");
                }
            }
            Maxyber.ConsolePrint("Всего пар, отвечающих условию, что только одно из двух чисел делится на 3 без остатка: " + pairCount);
            Console.Clear();
        }
コード例 #16
0
        static void Main(string[] args)
        {
            /*
             * // Задание №1 а) Дописать структуру Complex, добавив метод вычитания комплексных чисел. Продемонстрировать работу структуры.
             * //  б) Дописать класс Complex, добавив методы вычитания и произведения чисел.Проверить работу класса.
             * //  в) Добавить диалог с использованием switch демонстрирующий работу класса.
             *
             * // AskComplexNumbers(2); НЕ РАБОТАЕТ!!! метод формирования массива комплексных чисел, разобраться!!!
             * Complex complex1 = new Complex();
             * complex1 = complex1.AskNumber();
             * Complex complex2 = new Complex();
             * complex2 = complex2.AskNumber();
             *
             * ComplexCalc(complex1, complex2);
             *
             * // Задание №2 а)  С клавиатуры вводятся числа, пока не будет введён 0 (каждое число в новой строке). Требуется подсчитать сумму всех нечётных положительных чисел.
             * // Сами числа и сумму вывести на экран, используя tryParse.
             * int[] arr;
             * arr = Maxyber.InputIntArray();
             * Maxyber.ConsolePrintArray(arr);
             * Maxyber.SummArray(arr);
             */
            // Задание №3. *Описать класс дробей — рациональных чисел, являющихся отношением двух целых чисел. Предусмотреть методы сложения, вычитания, умножения и деления дробей.
            // Написать программу, демонстрирующую все разработанные элементы класса.
            // *Добавить свойства типа int для доступа к числителю и знаменателю;
            // *Добавить свойство типа double только на чтение, чтобы получить десятичную дробь числа;
            // **Добавить проверку, чтобы знаменатель не равнялся 0.Выбрасывать исключение ArgumentException("Знаменатель не может быть равен 0");
            // ***Добавить упрощение дробей.

            Fractions frac1 = new Fractions();

            frac1 = frac1.AskNumber();
            frac1 = frac1.Contraction();
            Maxyber.ConsolePrint(frac1.ToString());
            Fractions frac2 = new Fractions();

            frac2 = frac2.AskNumber();
            frac2 = frac2.Contraction();
            Maxyber.ConsolePrint(frac2.ToString());

            FractionsCalc(frac1, frac2);
        }
コード例 #17
0
        public Account ReadFile(string path, ref Account result, char accSeparator = ':', char varSeparator = '|')
        // ДОДЕЛАТЬ возможность записи массива Account[] из файлы по разделителю ':'
        // база логинов и паролей в файле выглядит как
        // account1|login1|password1:account2|login2|password2 и т.д.
        {
            string str = "";

            str = Maxyber.FileToString(path);
            // string[] masStr = str.Split(accSeparator);
            // Array.Resize(ref result, masStr.Length);
            // for (int i = 0; i < masStr.Length; i++)
            // {
            //    string[] temp = masStr[i].Split(varSeparator);
            string[] temp = str.Split(varSeparator);
            result.Set("accountName", temp[0]);
            result.Set("login", temp[1]);
            result.Set("password", temp[2]);
            // }
            return(result);
        }
コード例 #18
0
        static void Main(string[] args)
        {
            //Задача №1. Создать программу, которая будет проверять корректность ввода логина.Корректным логином будет строка от 2 до 10 символов,
            //содержащая только буквы латинского алфавита или цифры, при этом цифра не может быть первой:
            //а) без использования регулярных выражений;
            //б) **с использованием регулярных выражений.

            AskCorrectLogin();

            //Задача №2. Разработать статический класс Message, содержащий следующие статические методы для обработки текста:
            //а) Вывести только те слова сообщения,  которые содержат не более n букв.
            //б) Удалить из сообщения все слова, которые заканчиваются на заданный символ.
            //в) Найти самое длинное слово сообщения.
            //г) Сформировать строку с помощью StringBuilder из самых длинных слов сообщения.
            //д) ***Создать метод, который производит частотный анализ текста.В качестве параметра в него передается массив слов и текст,
            //  в качестве результата метод возвращает сколько раз каждое из слов массива входит в этот текст. Здесь требуется использовать класс Dictionary.

            MessageProgram();

            //Задача №3. * Для двух строк написать метод, определяющий, является ли одна строка перестановкой другой.
            //Например:
            //badc являются перестановкой abcd.

            Exchanging();

            //Задача №4. *Задача ЕГЭ.
            //На вход программе подаются сведения о сдаче экзаменов учениками 9 - х классов некоторой средней школы. В первой строке сообщается количество учеников N,
            //которое не меньше 10, но не превосходит 100, каждая из следующих N строк имеет следующий формат:
            //< Фамилия > < Имя > < оценки >,
            //где < Фамилия > — строка, состоящая не более чем из 20 символов, < Имя > — строка, состоящая не более чем из 15 символов, < оценки > —
            //через пробел три целых числа, соответствующие оценкам по пятибалльной системе. < Фамилия > и<Имя>, а также<Имя> и<оценки> разделены одним пробелом. Пример входной строки:
            //Иванов Петр 4 5 3
            //Требуется написать как можно более эффективную программу, которая будет выводить на экран фамилии и имена трёх худших по среднему баллу учеников.
            //Если среди остальных есть ученики, набравшие тот же средний балл, что и один из трёх худших, следует вывести и их фамилии и имена.

            StudentListAnalyse();

            Maxyber.ConsolePause();
        }
コード例 #19
0
        static public void StudentListAnalyse()
        {
            string path  = "data/students.txt";
            string temp  = Maxyber.FileToString(path);
            int    count = int.Parse(temp.Split('\n')[0]);

            Students[] studentList = new Students[count];
            for (int i = 0; i < studentList.Length; i++)
            {
                studentList[i] = new Students();
            }
            studentList = Students.ReadScoreFile(path);
            double[] middles = new double[count];
            double   middle1 = 10, middle2 = 10, middle3 = 10; // объявляем переменные для трех минимальных средних

            for (int i = 0; i < count; i++)                    // заполняем массив средних баллов студентов
            {
                double mid = double.Parse(studentList[i].Get("middle"));
                middles[i] = mid;
            }
            for (int i = 0; i < middles.Length; i++) // заполняем три минимальных средних оценки
            {
                if (middles[i] < middle1)
                {
                    middle3 = middle2;
                    middle2 = middle1;
                    middle1 = middles[i];
                    continue;
                }
                if ((middles[i] < middle2) && (middles[i] != middle1))
                {
                    middle3 = middle2;
                    middle2 = middles[i];
                    continue;
                }
                if ((middles[i] <= middle3) && (middles[i] != middle1) && (middles[i] != middle2))
                {
                    middle3 = middles[i];
                }
            }
            Console.WriteLine($"Минимальные средние баллы: {middle1:f3}, {middle2:f3}, {middle3:f3}");
            Console.WriteLine("");
            Console.WriteLine("Ученики, хуже всего написавшие ЕГЭ");
            StringBuilder result   = new StringBuilder(); // создаем строку для вывода студентов с самыми плохими баллами
            int           position = 0;

            for (int i = 0; i < studentList.Length; i++)
            {
                if (middle1 == double.Parse(studentList[i].Get("middle")))
                {
                    result.Insert(0, studentList[i].ToString() + "\r\n");
                    position = position + studentList[i].ToString().Length + 2;
                }
                if (middle2 == double.Parse(studentList[i].Get("middle")))
                {
                    result.Insert(position, studentList[i].ToString() + "\r\n");
                }
                if (middle3 == double.Parse(studentList[i].Get("middle")))
                {
                    result.Append(studentList[i].ToString() + "\r\n");
                }
            }
            Console.WriteLine(result.ToString());
        }
コード例 #20
0
ファイル: Program.cs プロジェクト: Maxyber/C_sharp_lvl1_1
        static void Main(string[] args)
        {
            string Family = "";
            string Name   = "";
            int    Age;
            double Height;
            int    Weight;

            //  Задание №1. Программа Анкета
            Console.WriteLine("Введите вашу фамилию");
            Family = Console.ReadLine();

            Console.WriteLine("Введите ваше имя");
            Name = Console.ReadLine();

            Console.WriteLine("Введите ваш возраст в годах");
            Age = Convert.ToInt32(Console.ReadLine());          // перевод в численное строкового значения возраста

            Console.WriteLine("Введите ваш рост в сантиметрах");
            Height = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Введите ваш вес в килограммах");
            Weight = Convert.ToInt32(Console.ReadLine());

            Console.Clear();
            Console.WriteLine(Family + " " + Name + ", возраст " + Age + " лет, вес " + Weight + " килограмм при росте " + Height + " сантиметров."); // способ вывода на экран склеиванием
            Console.WriteLine("{0} {1}, возраст {2} лет, вес {3} килограмм при росте {4} сантиметров.", Family, Name, Age, Weight, Height);           // форматированный вывод на экран
            Maxyber.ConsolePrint($"{Family} {Name}, возраст {Age} лет, вес {Weight} килограмм при росте {Height} сантиметров.");                      // форматированный вывод через знак $

            /* Задание №2. Ввести вес и рост человека. Рассчитать и вывести индекс массы тела (ИМТ) по формуле I=m/(h*h); где m — масса тела в килограммах, h — рост в метрах.
             */
            // программа рассчета индекса массы тела
            Height = Height / 100; // приводим рост человека к значению в метрах для расчета показателя
            double IMT;

            IMT = (Weight) / (Math.Pow(Height, 2));
            Console.WriteLine("Ваш индекс массы тела: {0:F2}", IMT);
            Console.ReadKey();
            Console.Clear();

            /* Задание №3.
             * а) Написать программу, которая подсчитывает расстояние между точками с координатами x1, y1 и x2,y2 по формуле r=Math.Sqrt(Math.Pow(x2-x1,2)+Math.Pow(y2-y1,2)).
             * Вывести результат, используя спецификатор формата .2f (с двумя знаками после запятой);
             * б) *Выполнить предыдущее задание, оформив вычисления расстояния между точками в виде метода.
             */
            int x1, x2, y1, y2;

            Console.WriteLine("введите последовательно координаты двух точек, x1, y1, x2, y2, нажимая Enter после ввода каждой координаты");
            x1 = Convert.ToInt32(Console.ReadLine());
            y1 = Convert.ToInt32(Console.ReadLine());
            x2 = Convert.ToInt32(Console.ReadLine());
            y2 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine($"x1 - {x1}, y1 = {y1}, x2 - {x2}, y2 - {y2}");

            Console.WriteLine($"Расстояние между точкам: {PointsDistanceMethod(x1, y1, x2, y2):f2}");
            Maxyber.ConsolePause();

            /* Задание №4.
             * Написать программу обмена значениями двух переменных:
             * а) с использованием третьей переменной;
             *  б) *без использования третьей переменной.
             */

            string strX, strY; // переменные для которых требуется обмен значениями
            int    XX, YY;

            Console.Clear();
            Console.WriteLine("Введите числовое значение первой переменной x");
            strX = Console.ReadLine();
            Console.WriteLine("Введите числовое значение второй переменной y");
            strY = Console.ReadLine();
            // обмен значениями переменных с использованием третьей любой тип

            /*
             * strTemp = strY;
             * strY = strX;
             * strX = strTemp;
             */
            // обмен значениями переменных без использования третьей числовой тип
            XX = Convert.ToInt32(strX);
            YY = Convert.ToInt32(strY);
            XX = XX + YY;
            YY = XX - YY;
            XX = XX - YY;
            Console.WriteLine($"X = {XX}, Y = {YY}");
            Console.ReadKey();

            /* Задание №5.
             * а) Написать программу, которая выводит на экран ваше имя, фамилию и город проживания.
             * б) *Сделать задание, только вывод организовать в центре экрана.
             * в) **Сделать задание б с использованием собственных методов (например, Print(string ms, int x,int y).
             */
            Console.Clear();
            string City = "Балашиха", FIO;
            int    consoleWidth, consoleHeight;
            double xStart, yStart;

            consoleHeight = Console.WindowHeight;
            consoleWidth  = Console.WindowWidth;
            Console.WriteLine("Введите название города в котором живете");
            City = Console.ReadLine();
            Console.WriteLine("Введите ФИО, которое хотите отобразить");
            FIO = Console.ReadLine();
            Console.Clear();
            // рассчет стартовых координат вывода первой строки сообщения
            xStart        = (consoleWidth - FIO.Length) / 2;
            yStart        = consoleHeight / 2;
            consoleWidth  = Convert.ToInt32(Math.Floor(xStart));
            consoleHeight = Convert.ToInt32(yStart) - 1;

            PrintMsg(consoleWidth, consoleHeight, FIO); // вывод первой строки сообщения

            // рассчет стартовых координат вывода второй строчки сообщения
            consoleWidth  = Console.WindowWidth;
            xStart        = (consoleWidth - City.Length) / 2;
            consoleWidth  = Convert.ToInt32(Math.Floor(xStart));
            consoleHeight = consoleHeight + 1;

            PrintMsg(consoleWidth, consoleHeight, City); // вывод второй строки сообщения
            Maxyber.ConsolePause();

            /* Задание №6.
             *Создать класс с методами, которые могут пригодиться в вашей учебе(Print, Pause).
             */
            Console.Clear();
            Maxyber.ConsolePrint("Проверка работоспособности метода, который создан в собственном классе и должен поставить паузу после вывода этого сообщения");
        }
コード例 #21
0
ファイル: Program.cs プロジェクト: Maxyber/C_sharp_lvl1_1
 public static void Pause()
 {
     Maxyber.ConsolePause();
 }