예제 #1
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();
        }
예제 #2
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);
        }
예제 #3
0
        // 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();
        }
예제 #4
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();
        }
예제 #5
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("Домашнее задание полностью выполнено");
        }
예제 #6
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");
        }
예제 #7
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();
        }
예제 #8
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);
        }
예제 #9
0
        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("Проверка работоспособности метода, который создан в собственном классе и должен поставить паузу после вывода этого сообщения");
        }