コード例 #1
0
        /// <summary>
        /// а) С клавиатуры вводятся числа, пока не будет введен 0 (каждое число в новой строке).
        /// Требуется подсчитать сумму всех нечетных положительных чисел.
        /// Сами числа и сумму вывести на экран; Используя tryParse;
        ///
        /// б) Добавить обработку исключительных ситуаций на то, что могут быть введены некорректные данные.При возникновении ошибки вывести сообщение.
        /// </summary>
        static void Task2()
        {
            int sum    = 0;
            int number = 0;

            //Clear console and print info regarding current task
            SupportMethods.PrepareConsoleForHomeTask("а) С клавиатуры вводятся числа, пока не будет введен 0 (каждое число в новой строке).\n" +
                                                     "Требуется подсчитать сумму всех нечетных положительных чисел.\n" +
                                                     "Сами числа и сумму вывести на экран; Используя tryParse;\n" +
                                                     "б) Добавить обработку исключительных ситуаций на то, что могут быть введены некорректные данные.При возникновении ошибки вывести сообщение.");

            do
            {
                //using TryParse without exception message
                //number = SupportMethods.RequestIntValue("Please input new number (0 - exit): ");

                //using Parse with exception message
                number = SupportMethods.RequestIntValueWithExceptionMsg("Please input new number (0 - exit): ");
                if (number % 2 == 1)
                {
                    Console.WriteLine($"### Found new Positive Odd number: {number}");
                    sum += number;
                }
            } while (number != 0);

            SupportMethods.Pause($"Sum of Positive Odd numbers: {sum}");
        }
コード例 #2
0
        /// <summary>
        /// Описать класс дробей - рациональных чисел, являющихся отношением двух целых чисел.
        /// Предусмотреть методы сложения, вычитания, умножения и деления дробей.
        /// Написать программу, демонстрирующую все разработанные элементы класса.
        ///
        /// * Добавить упрощение дробей.
        /// </summary>
        static void Task3()
        {
            //Clear console and print info regarding current task
            SupportMethods.PrepareConsoleForHomeTask("Описать класс дробей - рациональных чисел, являющихся отношением двух целых чисел.\n" +
                                                     "Предусмотреть методы сложения, вычитания, умножения и деления дробей.\n" +
                                                     "Написать программу, демонстрирующую все разработанные элементы класса.\n" +
                                                     "* Добавить упрощение дробей.");

            Fraction a = new Fraction();
            Fraction b = new Fraction();

            SupportMethods.RequestFraction(out a.numerator, out a.denominator, "Please input first Fraction (for exapmle 1 / 3): ");
            SupportMethods.RequestFraction(out b.numerator, out b.denominator, "Please input second Fraction (for exapmle 1 / 3): ");

            Fraction resultPlus   = a.Plus(b);
            Fraction resultMinus  = a.Minus(b);
            Fraction resultMulti  = a.Multi(b);
            Fraction resultDivide = a.Divide(b);

            //SupportMethods.Pause($"First Fractal is: {a.ToString()}");
            //SupportMethods.Pause($"Second Fractal is: {b.ToString()}");

            SupportMethods.Pause($"{a.ToString()} + {b.ToString()} = {resultPlus.ToString()}\n" +
                                 $"{a.ToString()} - {b.ToString()} = {resultMinus.ToString()}\n" +
                                 $"{a.ToString()} * {b.ToString()} = {resultMulti.ToString()}\n" +
                                 $"{a.ToString()} / {b.ToString()} = {resultDivide.ToString()}");
        }
コード例 #3
0
        static void Main(string[] args)
        {
            do
            {
                SupportMethods.PrepareConsoleForHomeTask("1 - Task 1\n" +
                                                         "2 - Task 2\n" +
                                                         "3 - Task 3\n" +
                                                         "0 (Esc) - Exit\n");
                ConsoleKeyInfo key = Console.ReadKey();
                Console.WriteLine();
                switch (key.Key)
                {
                case ConsoleKey.D1:
                    Task1();
                    break;

                case ConsoleKey.D2:
                    Task2();
                    break;

                case ConsoleKey.D3:
                    Task3();
                    break;

                case ConsoleKey.D0:
                case ConsoleKey.Escape:
                    return;

                default:
                    break;
                }
            } while (true);
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: MaxMaxoff/HomeWork2
        /// <summary>
        /// Задание 5
        /// а) Написать программу, которая запрашивает массу и рост человека, вычисляет его индекс массы и сообщает, нужно ли человеку похудеть, набрать вес или все в норме;
        /// б) *Рассчитать, на сколько кг похудеть или сколько кг набрать для нормализации веса.
        /// Википедия:
        /// Индекс массы тела	Соответствие между массой человека и его ростом
        /// 16 и менее  Выраженный дефицит массы тела
        /// 16—18,5	Недостаточная(дефицит) масса тела
        /// 18,5—24,99	Норма
        /// 25—30	Избыточная масса тела(предожирение)
        /// 30—35	Ожирение
        /// 35—40	Ожирение резкое
        /// 40 и более  Очень резкое ожирение
        /// </summary>
        static void Task5()
        {
            //Clear console and print info regarding current task
            SupportMethods.PrepareConsoleForHomeTask("Написать программу, которая запрашивает массу и рост человека, вычисляет его индекс массы и сообщает, нужно ли человеку похудеть, набрать вес или все в норме;\n" +
                                                     "*Рассчитать, на сколько кг похудеть или сколько кг набрать для нормализации веса.");

            const double MINNORMA = 18.5;
            const double MAXNORMA = 24.99;

            //input number using SupportMethods.RequestIntValue
            double weight = SupportMethods.RequestDoubleValue("Please input weight in kg: ");

            //input number using SupportMethods.RequestIntValue
            double height = SupportMethods.RequestDoubleValue("Please input height in meters: ");

            double bmi = weight / (height * height);

            if (bmi < MINNORMA)
            {
                double addkg = MINNORMA * height * height - bmi * height * height;
                //Output result of work using SupportMethods.Pause
                SupportMethods.Pause($"Your Body Mass Index (BMI) is {bmi:F2} and less than normal, you should eat more and add {addkg:F2} kg or more");
            }
            else if (bmi > MAXNORMA)
            {
                double addkg = bmi * height * height - MAXNORMA * height * height;
                //Output result of work using SupportMethods.Pause
                SupportMethods.Pause($"Your Body Mass Index (BMI) is {bmi:F2} and higher than normal, you should lose your weight by {addkg:F2} kg or more");
            }
            else
            {
                //Output result of work using SupportMethods.Pause
                SupportMethods.Pause($"Your Body Mass Index (BMI) is {bmi:F2} and you're in perfect form, Keep it up!");
            }
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: MaxMaxoff/HomeWorkA4
        /// <summary>
        /// 2. Решить задачу о нахождении длины максимальной последовательности с помощью матрицы.
        /// </summary>
        static void Task2()
        {
            SupportMethods.PrepareConsoleForHomeTask("2. Решить задачу о нахождении длины максимальной последовательности с помощью матрицы.\n");
            string str1 = SupportMethods.RequestString("Please type fist sequence: ");
            string str2 = SupportMethods.RequestString("Please type second sequence: ");

            str1 = " " + str1;
            str2 = " " + str2;

            int[,] arr = new int[str1.Length, str2.Length];
            char[] strArr1 = str1.ToCharArray();
            char[] strArr2 = str2.ToCharArray();

            for (int i = 0; i < strArr1.Length; i++)
            {
                SupportMethods.Print($"{strArr1[i]}", i * 2 + 2, 6);
                SupportMethods.Print($"0", i * 2 + 2, 7);
            }

            for (int j = 0; j < strArr2.Length; j++)
            {
                SupportMethods.Print($"{strArr2[j]}", 0, j + 7);
                SupportMethods.Print($"0", 2, j + 7);
            }

            SupportMethods.Pause($"\nMax overall sequence: {MaxL(arr, strArr1, strArr2)}\nPress any key to continue...");
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: MaxMaxoff/HomeWorkA1
        /// <summary>
        /// 10. Дано целое число N (> 0).
        /// С помощью операций деления нацело и взятия остатка от деления определить, имеются ли в записи числа N нечетные цифры.
        /// Если имеются, то вывести True, если нет — вывести False.
        /// </summary>
        static void Task5()
        {
            SupportMethods.PrepareConsoleForHomeTask("10. Дано целое число N (> 0).\n" +
                                                     "С помощью операций деления нацело и взятия остатка от деления определить, имеются ли в записи числа N нечетные цифры.\n" +
                                                     "Если имеются, то вывести True, если нет — вывести False.\n");

            int  number = SupportMethods.RequestIntValue("Please type number: ");
            bool odd    = false;

            if (number < 0)
            {
                number *= -1;
            }

            while (number > 0)
            {
                if (number % 10 % 2 == 1)
                {
                    odd = true;
                    break;
                }
                else
                {
                    number /= 10;
                }
            }

            SupportMethods.Pause($"{odd}");
        }
コード例 #7
0
        /// <summary>
        /// 1. Реализовать простейшую хэш-функцию. На вход функции подается строка, на выходе сумма кодов символов.
        /// </summary>
        static void Task1()
        {
            SupportMethods.PrepareConsoleForHomeTask("1. Реализовать простейшую хэш-функцию. На вход функции подается строка, на выходе сумма кодов символов.\n");
            string str = SupportMethods.RequestString("Please type string: ");

            SupportMethods.Pause($"Hash: {HashFunction(str)}");
        }
コード例 #8
0
        private static void Main(string[] args)
        {
            do
            {
                SupportMethods.PrepareConsoleForHomeTask("1 - Умножение матриц в один поток\n" +
                                                         "2 - Многопоточное умножение матриц\n" +
                                                         "0 (Esc) - Exit\n");
                ConsoleKeyInfo key = Console.ReadKey();
                Console.WriteLine();
                switch (key.Key)
                {
                case ConsoleKey.D1:
                    Task1();
                    break;

                case ConsoleKey.D2:
                    Task2();
                    break;

                case ConsoleKey.D0:
                case ConsoleKey.Escape:
                    return;

                default:
                    break;
                }
            } while (true);
        }
コード例 #9
0
        /// <summary>
        /// ***В заданной папке найти во всех html файлах теги <img src=...> и вывести названия картинок.
        /// Использовать регулярные выражения.
        /// </summary>
        static void Task6()
        {
            // Prepare Console
            SupportMethods.Pause($"***В заданной папке найти во всех html файлах теги <img src=...> и вывести названия картинок." +
                                 $"Использовать регулярные выражения.\n");

            // Получаем список файлов в папке. AllDirectories - сканировать также и подпапки
            string[] fs = Directory.GetFiles("C:\\tmp\\test", "*.html", SearchOption.AllDirectories);

            string pattern = @"\<img src=""(.*?)\""";

            // Просматриваем каждый файл в массиве
            foreach (var filename in fs)
            {
                // Создаем регулярное выражения дя поиска тегов
                Regex regex = new Regex(pattern);

                // Считываем файл
                string s = File.ReadAllText(filename);
                Console.WriteLine($"\n{filename}:");

                // Выводим найденные адреса на экран
                foreach (Match c in regex.Matches(s))
                {
                    //Console.WriteLine($"{c} {regex.Matches(s)}");
                    Console.WriteLine($"{c.Groups[1].Value}");
                }
            }
            Console.ReadKey();
        }
コード例 #10
0
        /// <summary>
        /// **В файле могут встречаться номера телефонов, записанные в формате xx-xx-xx, xxx-xxx или xxx-xx-xx.
        /// Вывести все номера телефонов, которые содержатся в файле.
        /// </summary>
        static void Task4()
        {
            // Prepare Console
            SupportMethods.Pause($"**В файле могут встречаться номера телефонов, записанные в формате xx-xx-xx, xxx-xxx или xxx-xx-xx.\n" +
                                 $"Вывести все номера телефонов, которые содержатся в файле.");

            // Regex pattern for xx-xx-xx, xxx-xxx или xxx-xx-xx in text
            string pattern = @"((\d{2}-\d{2}-\d{2})|(\d{3}-\d{2}-\d{2})|(\d{3}-\d{3}))";

            // Create and initialize new regex
            Regex rgx = new Regex(pattern);

            // Check if file exist
            if (File.Exists("file.dat"))
            {
                // Read all text from file into string
                string text = File.ReadAllText("file.dat");

                SupportMethods.Pause($"Текущее содержание файла:\n{text}");

                // try to get one matches
                Console.WriteLine("\nНайденные номера:\n");

                foreach (var c in rgx.Matches(text))
                {
                    Console.WriteLine($"{c}");
                }
            }
            else
            {
                Console.WriteLine("File not found!");
            }

            SupportMethods.Pause();
        }
コード例 #11
0
ファイル: Fild.cs プロジェクト: Dblind/TETRISV1.0
 public void NewFigure()
 {
     Run.FlagFastFall = false;
     Run.StepFall     = 99;
     try //first call is null
     {
         Move.CheckRows(this);
     }
     catch { }
     Move.dotMove[0] = 0; Move.dotMove[1] = Move.startMovePoint;
     FigNow          = FigNext; numberFigNow = numberFigNext;
     numberFigNext   = rand.Next(1, 8);
     MakeNextFig();
     if (!SupportMethods.Intersection(FigNow.Form, this))
     {
         Console.CursorTop       = 3; Console.CursorLeft = 4;
         Console.BackgroundColor = ConsoleColor.DarkMagenta;
         Console.ForegroundColor = ConsoleColor.Yellow;
         System.Console.Write("< Game Over >");
         bool flag = true;
         do
         {
             if ('q' == Console.ReadKey(true).KeyChar)
             {
                 flag = false;
             }
         }while (flag);
         this.RunGame = Run.haveGame = false;
         Run.isSave   = true;
         Score        = 0;
         Console.ResetColor();
         Console.CursorVisible = true;
     }
 }
コード例 #12
0
        /// <summary>
        /// Задача 1.
        ///
        /// Изменить программу вывода функции так, чтобы можно было передавать функции типа double(double,double).
        /// Продемонстрировать работу на функции с функцией a*x^2 и функцией a*sin(x).
        /// </summary>
        static void Task1()
        {
            //Prepare console
            SupportMethods.PrepareConsoleForHomeTask("Изменить программу вывода функции так, чтобы можно было передавать функции типа double(double,double).\n" +
                                                     "Продемонстрировать работу на функции с функцией a*x^2 и функцией a*sin(x).");



            // Создаем новый делегат и передаем ссылку на него в метод Table
            Console.WriteLine("Таблица функции MyFunc:");

            // Параметры метода и тип возвращаемого значения, должны совпадать с делегатом
            //Table(new Fun(MyFunc1), -2, 2);
            //Console.WriteLine("Еще раз та же таблица, но вызов организован по новому");

            // Упрощение(c C# 2.0).Делегат создается автоматически.
            Console.WriteLine("Таблица функции a * x^2:");
            Table(MyFunc1, -2, -2, 2);

            Console.WriteLine("Таблица функции a * sin(x):");
            Table(MyFunc2, -2, -2, 2); // Можно передавать уже созданные методы

            // Упрощение(с C# 2.0). Использование анонимного метода
            //Table(delegate (double x) { return x * x; }, 0, 3);

            SupportMethods.Pause();
        }
コード例 #13
0
ファイル: Authentication.cs プロジェクト: MaxMaxoff/HomeWork4
        /// <summary>
        /// Authentication method
        /// </summary>
        /// <param name="records">array of username:password records</param>
        /// <param name="maxcount">max attempts</param>
        /// <returns></returns>
        public bool Authenticate(int maxcount)
        {
            int count = 0;

            do
            {
                count++;

                //get username
                string username = SupportMethods.RequestString("Please type your Username: "******"Please type your password: "******"Wrong username or password!");
                Console.WriteLine($"{maxcount - count} attempts remaining!");
            } while (count < maxcount);

            return(false);
        }
コード例 #14
0
        /// <summary>
        /// Задание 5.
        /// **Существует алгоритмическая игра “Удвоитель”.
        /// В этой игре человеку предлагается какое-то число, а человек должен, управляя роботом “Удвоитель”, достичь этого числа за минимальное число шагов.
        /// Робот умеет выполнять несколько команд: увеличить число на 1, умножить число на 2 и сбросить число до 1.
        /// Начальное значение удвоителя равно 1.
        ///
        /// Реализовать класс “Удвоитель”.
        /// Класс хранит в себе поле current - текущее значение,
        /// finish - число, которого нужно достичь,
        /// конструктор, в котором задается конечное число.
        ///
        /// Методы: увеличить число на 1,
        /// увеличить число в два раза,
        /// сброс текущего до 1,
        ///
        /// свойство Current, которое возвращает текущее значение,
        /// свойство Finish, которое возвращает конечное значение.
        ///
        /// Создать с помощью этого класса игру, в которой компьютер загадывает число,
        /// а человек.выбирая из меню на экране, отдает команды удвоителю и старается получить это число за наименьшее число ходов.
        /// Если человек получает число больше положенного, игра прекращается.
        /// </summary>
        static void Task5()
        {
            //Clear console and print info regarding current task
            SupportMethods.PrepareConsoleForHomeTask($"Задание 5. Игра \"Удвоитель\"\n");
            Doubler game = new Doubler();

            do
            {
                SupportMethods.PrepareConsoleForHomeTask("Задание 5. Игра \"Удвоитель\"\n" +
                                                         $"Загаданное число: {game.Finish}\n" +
                                                         $"Число у игрока: {game.Current}\n" +
                                                         $"Шагов: {game.Steps}\n\n" +
                                                         "Список команд:\n" +
                                                         "1 - увеличить число на 1\n" +
                                                         "2 - умножить число на 2\n" +
                                                         "3 - сбросить число до 1\n" +
                                                         "0 (Esc) - Exit\n");
                ConsoleKeyInfo key = Console.ReadKey();
                Console.WriteLine();
                switch (key.Key)
                {
                case ConsoleKey.D1:
                    game.Increment();
                    break;

                case ConsoleKey.D2:
                    game.Doubling();
                    break;

                case ConsoleKey.D3:
                    game.Reset();
                    break;

                case ConsoleKey.D0:
                case ConsoleKey.Escape:
                    return;

                default:
                    break;
                }
            } while (game.Finish > game.Current);

            if (game.Finish == game.Current)
            {
                SupportMethods.PrepareConsoleForHomeTask("Задание 5. Игра \"Удвоитель\"\n" +
                                                         $"Загаданное число: {game.Finish}\n" +
                                                         $"Число у игрока: {game.Current}\n" +
                                                         $"Шагов: {game.Steps}\n\n");
                SupportMethods.Pause($"Поздравляем! Вы победили за {game.Steps} шагов!");
            }
            else
            {
                SupportMethods.PrepareConsoleForHomeTask("Задание 5. Игра \"Удвоитель\"\n" +
                                                         $"Загаданное число: {game.Finish}\n" +
                                                         $"Число у игрока: {game.Current}\n" +
                                                         $"Шагов: {game.Steps}\n\n");
                SupportMethods.Pause($"К сожалению, Вы проиграли!\n Попробуйте еще раз!");
            }
        }
コード例 #15
0
ファイル: Program.cs プロジェクト: MaxMaxoff/HomeWorkA4
        /// <summary>
        /// 3. ***Требуется обойти конём шахматную доску размером NxM, пройдя через все поля доски по одному разу.
        /// Здесь алгоритм решения такой же как и в задаче о 8 ферзях. Разница только в проверке положения коня.
        /// </summary>
        static void Task3()
        {
            SupportMethods.PrepareConsoleForHomeTask("3. ***Требуется обойти конём шахматную доску размером NxM, пройдя через все поля доски по одному разу.\n" +
                                                     "Здесь алгоритм решения такой же как и в задаче о 8 ферзях. Разница только в проверке положения коня.\n");

            int x = SupportMethods.RequestIntValue("Please type size of field, x value: ");
            int y = SupportMethods.RequestIntValue("Please type size of field, y value: ");

            Knight knight = new Knight(x, y);

            knight.sleep = 0; // sleep after movement, change it if you need to see movements

            int curMove;

            do
            {
                knight.MoveNumber++;
                SupportMethods.Print($"Move: {knight.MoveNumber}", 0, 7);

                curMove = 9;

                if (knight.MoveNumber < x * y)
                {
                    curMove = knight.GetBestMovement;
                }
                else
                {
                    curMove = knight.GetLastMove;
                }

                if (knight.MoveNumber < x * y && curMove == 9)
                {
                    curMove = knight.RollOut();
                }

                if (knight.MoveNumber == 1)
                {
                    knight = new Knight(x, y);
                }
                else
                {
                    knight.Move(curMove);
                }
            } while (knight.MoveNumber < x * y);

            SupportMethods.Print("Done", 0, 8 + y);

            //if (knight.MoveNumber < x * y)
            //    SupportMethods.Pause($"Unsucessfull...\n{knight.ToString()}\nPress any key to Continue...");
            //else SupportMethods.Pause($"Sucessfull...\n{knight.ToString()}\nPress any key to Continue...");
            if (knight.MoveNumber < x * y)
            {
                SupportMethods.Pause($"Unsucessfull...\nPress any key to Continue...");
            }
            else
            {
                SupportMethods.Pause($"Sucessfull...\nPress any key to Continue...");
            }
        }
コード例 #16
0
 /// <summary>
 /// Move to requested point
 /// </summary>
 /// <param name="x">column</param>
 /// <param name="y">row</param>
 public void MoveAny(int a, int b)
 {
     x           = a;
     y           = b;
     field[x, y] = moveNumber;
     SupportMethods.Print($"{field[x, y]}", x * 3, y + 7);
     Thread.Sleep(sleep);
 }
コード例 #17
0
        /// <summary>
        /// 2. Реализовать функцию возведения числа a в степень b:
        /// a.без рекурсии;
        /// b.рекурсивно;
        /// c. * рекурсивно, используя свойство чётности степени.
        /// </summary>
        static void Task2()
        {
            SupportMethods.PrepareConsoleForHomeTask("2. Реализовать функцию возведения числа a в степень b:\n");

            int a = SupportMethods.RequestIntValue("Please type a: ");
            int b = SupportMethods.RequestIntValue("Please type b: ");

            // a.без рекурсии;
            SupportMethods.PrepareConsoleForHomeTask("2. Реализовать функцию возведения числа a в степень b:\n" +
                                                     "a.без рекурсии;\n");

            if (b > 0)
            {
                SupportMethods.Pause($"{a} raise to a Power {b} equals {raisePower(a, b)}");
            }
            else if (b < 0)
            {
                SupportMethods.Pause($"{a} raise to a Power {b} equals 1/{raisePower(a, b * (-1))}");
            }
            else
            {
                SupportMethods.Pause($"{a} raise to a Power {b} equals 1");
            }

            // b.рекурсивно;
            SupportMethods.PrepareConsoleForHomeTask("2. Реализовать функцию возведения числа a в степень b:\n" +
                                                     "b.рекурсивно;\n");

            if (b > 0)
            {
                SupportMethods.Pause($"{a} raise to a Power {b} equals {raisePowerRecursion(a, b)}");
            }
            else if (b < 0)
            {
                SupportMethods.Pause($"{a} raise to a Power {b} equals 1/{raisePowerRecursion(a, b * (-1))}");
            }
            else
            {
                SupportMethods.Pause($"{a} raise to a Power {b} equals 1");
            }

            // c. * рекурсивно, используя свойство чётности степени.
            SupportMethods.PrepareConsoleForHomeTask("2. Реализовать функцию возведения числа a в степень b:\n" +
                                                     "c. * рекурсивно, используя свойство чётности степени.\n");

            if (b > 0)
            {
                SupportMethods.Pause($"{a} raise to a Power {b} equals {raiseEVENPowerRecursion(a, b)}");
            }
            else if (b < 0)
            {
                SupportMethods.Pause($"{a} raise to a Power {b} equals 1/{raiseEVENPowerRecursion(a, b * (-1))}");
            }
            else
            {
                SupportMethods.Pause($"{a} raise to a Power {b} equals 1");
            }
        }
コード例 #18
0
 static void Main(string[] args)
 {
     //SupportMethods.printTestErrors("zenotravel", true); return;
     //RunFakeNetworks(args);
     SupportMethods.storeStatesForTraining("blocks", PADD.DomainDependentSolvers.DomainType.Blocks, new List <HeuristicType>()
     {
         HeuristicType.FF
     });
 }
コード例 #19
0
        /// <summary>
        /// а) Дописать структуру Complex, добавив метод вычитания комплексных чисел. Продемонстрировать работу структуры;
        ///
        /// б) Дописать класс Complex, добавив методы вычитания и произведения чисел.Проверить работу класса;
        /// </summary>
        static void Task1()
        {
            //Clear console and print info regarding current task
            SupportMethods.PrepareConsoleForHomeTask("a) Дописать структуру Complex, добавив метод вычитания комплексных чисел. Продемонстрировать работу структуры;\n" +
                                                     "б) Дописать класс Complex, добавив методы вычитания и произведения чисел. Проверить работу класса;");

            //Блок для работы со структурой
            // z = 1 + 1i
            Complex complex1;

            complex1.re = 1;
            complex1.im = 1;

            // z = 2 + 2i
            Complex complex2;

            complex2.re = 2;
            complex2.im = 2;

            // (1 + 1i) + (2 + 2i)
            Complex resultPlus = complex1.Plus(complex2);

            // (1 + 1i) - (2 + 2i)
            Complex resultMinus = complex1.Minus(complex2);

            // (1 + 1i) * (2 + 2i)
            Complex resultMultiply = complex1.Multi(complex2);
            //Конец блока для работы со структурой

            //Блок для работы с классом
            ComplexClass complex11 = new ComplexClass();

            complex11.re = 1;
            complex11.im = 1;

            ComplexClass complex22 = new ComplexClass();

            complex22.re = 2;
            complex22.im = 2;

            // (1 + 1i) + (2 + 2i)
            ComplexClass resultClassPlus = complex11.Plus(complex22);

            // (1 + 1i) - (2 + 2i)
            ComplexClass resultClassMinus = complex11.Minus(complex22);

            // (1 + 1i) * (2 + 2i)
            ComplexClass resultClassMultiply = complex11.Multi(complex22);

            //Конец блока для работы с классом

            //Вывод результата структуры и комплекса:
            SupportMethods.Pause("Работа структуры:\n" +
                                 $"Сложение комплексных чисел структура: {resultPlus.ToString()}; класс: {resultClassPlus.ToString()}\n" +
                                 $"Вычитание косплексных чисел структура: {resultMinus.ToString()}; класс: {resultClassMinus.ToString()}\n" +
                                 $"Умножение косплексных чисел структура: {resultMultiply.ToString()}; класс: {resultClassMultiply.ToString()}");
        }
コード例 #20
0
        /// <summary>
        /// Method CheckLoginComplexityRegEx
        /// Корректным логином будет строка от 2-х до 10-ти символов, содержащая только буквы или цифры, и при этом цифра не может быть первой.
        /// б) **с использованием регулярных выражений.
        /// </summary>
        /// <param name="rgx">any string, please don't care about it</param>
        public bool CheckLoginComplexityRegEx()
        {
            Regex regex = new Regex(@"^[a-zA-Z][0-9a-zA-Z]{2,9}$");

            do
            {
                username = SupportMethods.RequestString("Please type your login: ");
            } while (!regex.IsMatch(username));

            return(true);
        }
コード例 #21
0
        /// <summary>
        /// 3. Исполнитель Калькулятор преобразует целое число, записанное на экране.
        /// У исполнителя две команды, каждой команде присвоен номер:
        /// 1. Прибавь 1
        /// 2. Умножь на 2
        /// Первая команда увеличивает число на экране на 1, вторая увеличивает это число в 2 раза.
        /// Сколько существует программ, которые число 3 преобразуют в число 20?
        /// а) с использованием массива;
        /// б) с использованием рекурсии.
        /// </summary>
        static void Task3()
        {
            SupportMethods.PrepareConsoleForHomeTask("3. Исполнитель Калькулятор преобразует целое число, записанное на экране.\n" +
                                                     "У исполнителя две команды, каждой команде присвоен номер:\n" +
                                                     "1. Прибавь 1\n" +
                                                     "2. Умножь на 2\n" +
                                                     "Первая команда увеличивает число на экране на 1, вторая увеличивает это число в 2 раза.\n" +
                                                     "Сколько существует программ, которые число 3 преобразуют в число 20?\n");

            int a = SupportMethods.RequestIntValue("Please type a: ");
            int b = SupportMethods.RequestIntValue("Please type b: ");

            if (a > 0 && b > 0 && a < b)
            {
                // а) с использованием массива;
                SupportMethods.PrepareConsoleForHomeTask("3. Исполнитель Калькулятор преобразует целое число, записанное на экране.\n" +
                                                         "У исполнителя две команды, каждой команде присвоен номер:\n" +
                                                         "1. Прибавь 1\n" +
                                                         "2. Умножь на 2\n" +
                                                         "Первая команда увеличивает число на экране на 1, вторая увеличивает это число в 2 раза.\n" +
                                                         "Сколько существует программ, которые число 3 преобразуют в число 20?\n" +
                                                         "а) с использованием массива;\n");

                SupportMethods.Pause($"Qty of programs: {CalcArray(a, b)}");

                // б) с использованием рекурсии.
                SupportMethods.PrepareConsoleForHomeTask("3. Исполнитель Калькулятор преобразует целое число, записанное на экране.\n" +
                                                         "У исполнителя две команды, каждой команде присвоен номер:\n" +
                                                         "1. Прибавь 1\n" +
                                                         "2. Умножь на 2\n" +
                                                         "Первая команда увеличивает число на экране на 1, вторая увеличивает это число в 2 раза.\n" +
                                                         "Сколько существует программ, которые число 3 преобразуют в число 20?\n" +
                                                         "б) с использованием рекурсии.\n");

                SupportMethods.Pause($"Qty of programs: {CalcRecursion(a, b)}");
            }
            else if ((a > 0 && a > b) || (a == 0 && b < 0))
            {
                SupportMethods.Pause($"Qty of programs: 0");
            }
            else if (a <= 0 && b > 0)
            {
                SupportMethods.Pause($"Qty of programs: {CalcRecursion(1, b)}, Infinity qty of programs.");
            }
            // SupportMethods.Pause($"Qty of programs: {CalcArray(1, b)}, Infinity qty of programs.");
            else if ((a == 0 && b >= 0) || (a < 0 && b <= 0))
            {
                SupportMethods.Pause($"Infinity qty of programs.");
            }
            else if (a == b)
            {
                SupportMethods.Pause($"Qty of programs: 1");
            }
        }
コード例 #22
0
ファイル: Program.cs プロジェクト: MaxMaxoff/HomeWork2
        /// <summary>
        /// Задание 2
        /// Написать метод подсчета количества цифр числа.
        /// </summary>
        static void Task2()
        {
            //Clear console and print info regarding current task
            SupportMethods.PrepareConsoleForHomeTask("Написать метод подсчета количества цифр числа.");

            //input number using SupportMethods.RequestIntValue
            int number = SupportMethods.RequestIntValue("Please input number: ");

            //Output result of work using SupportMethods.Pause and including CountOfDigits method
            SupportMethods.Pause($"Count of Digits in {number} is {CountOfDigits(number)}");
        }
コード例 #23
0
ファイル: Figure.cs プロジェクト: Dblind/TETRISV1.0
        // +  --
        // +  ++
        public void RotatePosition(int rc, Fild fg)
        {
            switch (rc)
            {
            case (0):
                if (SupportMethods.Intersection(Form_0, fg))
                {
                    Form = Form_0; rollCount = NextPosition();
                }
                break;

            case (1):
                Move.TakeOutFigForm(fg);
                bool flag2 = true, strf = false;
                strf = Move.dotMove[1] == fg.FildGame.GetLength(1) - 1 ||
                       (fg.FildGame[Move.dotMove[0] + 1, Move.dotMove[1] + 1] == true &&
                        Move.dotMove[1] != 0);
                if (strf)
                {
                    Move.dotMove[1]--;
                }
                for (int i = 0; i < Form_2.GetLength(0); i++)
                {
                    for (int j = 0; j < Form_2.GetLength(1); j++)
                    {
                        if (Form_2[i, j] == true)
                        {
                            if (Form_2[i, j] == fg.FildGame[i + Move.dotMove[0], j + Move.dotMove[1]])
                            {
                                flag2 = false; break;
                            }
                        }
                        if (!flag2)
                        {
                            break;
                        }
                    }
                }
                if (!flag2)
                {
                    if (strf)
                    {
                        Move.dotMove[1]++;
                    }
                    Move.SetFigForm(fg);
                }
                else
                {
                    Form = Form_2; rollCount = NextPosition(); Move.SetFigForm(fg);
                }
                break;
            }
        }
コード例 #24
0
ファイル: Program.cs プロジェクト: MaxMaxoff/HomeWorkA7
        /// <summary>
        /// 1. Написать функции, которые считывают матрицу смежности из файла и выводят ее на экран
        /// </summary>
        static void Task1()
        {
            string filename = "./matrix.txt";

            int lineCount = TotalLines(filename);

            Graphs graph = new Graphs(lineCount, filename);

            graph.writeMatrixTofile("./matrix2.txt");

            SupportMethods.Pause(graph.ToString());
        }
コード例 #25
0
        /// <summary>
        /// Задача 2.
        ///
        /// *Модифицировать программу нахождения минимума функции так, чтобы можно было передавать функцию в виде делегата.
        /// Сделать меню с различными функциями и представьте пользователю выбор для какой функции и на каком отрезке находить минимум.
        /// Используйте массив делегатов.
        /// </summary>
        static void Task2()
        {
            // Создание и инициализация массива делегатов
            Func[] functions = new Func[5];

            // Заполнение массива делегатов
            functions[0] = F1;
            functions[1] = F2;
            functions[2] = F3;
            functions[3] = F4;
            functions[4] = F5;

            // Меню выбора функций
            do
            {
                SupportMethods.PrepareConsoleForHomeTask("*Модифицировать программу нахождения минимума функции так, чтобы можно было передавать функцию в виде делегата.\n" +
                                                         "Сделать меню с различными функциями и представьте пользователю выбор для какой функции и на каком отрезке находить минимум.\n" +
                                                         "Используйте массив делегатов.\n" +
                                                         "1 - функция: x ^ 2 - 50 * x + 10\n" +
                                                         "2 - функция: x ^ 2 + 20 * x + 5\n" +
                                                         "3 - функция: x ^ 2\n" +
                                                         "4 - функция: sin(x)\n" +
                                                         "5 - функция: x ^ 3\n" +
                                                         "0 (Esc) - Exit\n");
                ConsoleKeyInfo key = Console.ReadKey();
                Console.WriteLine();

                switch (key.Key)
                {
                case ConsoleKey.D1:
                case ConsoleKey.D2:
                case ConsoleKey.D3:
                case ConsoleKey.D4:
                case ConsoleKey.D5:
                    SaveFunc(functions[int.Parse(key.KeyChar.ToString()) - 1],
                             "data.bin",
                             SupportMethods.RequestIntValue("Введите начало отрезка, например -100: "),
                             SupportMethods.RequestIntValue("Введите конец отрезка, например 100: "),
                             SupportMethods.RequestDoubleValue("Введите точность, например 0,5: "));

                    SupportMethods.Pause($"Минимум функции на заданном отрезке с заданной точностью равен {Load("data.bin"):F2}");
                    break;

                case ConsoleKey.D0:
                case ConsoleKey.Escape:
                    return;

                default:
                    break;
                }
            } while (true);
        }
コード例 #26
0
ファイル: Program.cs プロジェクト: MaxMaxoff/HomeWork2
        /// <summary>
        /// Build menu
        /// </summary>
        static void Start()
        {
            do
            {
                SupportMethods.PrepareConsoleForHomeTask("1 - Task 1\n" +
                                                         "2 - Task 2\n" +
                                                         "3 - Task 3\n" +
                                                         "4 - Task 4\n" +
                                                         "5 - Task 5\n" +
                                                         "6 - Task 6\n" +
                                                         "7 - Task 7\n" +
                                                         "0 (Esc) - Exit\n");
                ConsoleKeyInfo key = Console.ReadKey();
                switch (key.Key)
                {
                case ConsoleKey.D1:
                    Task1();
                    break;

                case ConsoleKey.D2:
                    Task2();
                    break;

                case ConsoleKey.D3:
                    Task3();
                    break;

                case ConsoleKey.D4:
                    Task4();
                    break;

                case ConsoleKey.D5:
                    Task5();
                    break;

                case ConsoleKey.D6:
                    Task6();
                    break;

                case ConsoleKey.D7:
                    Task7();
                    break;

                case ConsoleKey.D0:
                case ConsoleKey.Escape:
                    return;

                default:
                    break;
                }
            } while (true);
        }
コード例 #27
0
ファイル: Program.cs プロジェクト: MaxMaxoff/HomeWork2
        /// <summary>
        /// Задание 1
        /// Написать метод возвращающий минимальное из трех чисел.
        /// </summary>
        static void Task1()
        {
            //Clear console and print info regarding current task
            SupportMethods.PrepareConsoleForHomeTask("Написать метод возвращающий минимальное из трех чисел.");

            //input a, b and c using SupportMethods.RequestIntValue
            int a = SupportMethods.RequestIntValue("Please input a: ");
            int b = SupportMethods.RequestIntValue("Please input b: ");
            int c = SupportMethods.RequestIntValue("Please input c: ");

            //Output result of work using SupportMethods.Pause and including MinInt method
            SupportMethods.Pause($"Minimum between {a}, {b} and {c} is {MinInt(a, b, c)}");
        }
コード例 #28
0
ファイル: Program.cs プロジェクト: MaxMaxoff/HomeWorkA1
        /// <summary>
        /// 14. * Автоморфные числа.
        /// Натуральное число называется автоморфным, если оно равно последним цифрам своего квадрата.
        /// Например, 25 ^ 2 = 625.
        /// Напишите программу, которая вводит натуральное число N и выводит на экран все автоморфные числа, не превосходящие N.
        /// </summary>
        static void Task1()
        {
            SupportMethods.PrepareConsoleForHomeTask("14. * Автоморфные числа.\n" +
                                                     "Натуральное число называется автоморфным, если оно равно последним цифрам своего квадрата.\n" +
                                                     "Например, 25 ^ 2 = 625.\n" +
                                                     "Напишите программу, которая вводит натуральное число N и выводит на экран все автоморфные числа, не превосходящие N.\n");

            int nn = SupportMethods.RequestIntValue("Plase type N:");

            // конвертирование Int в UInt
            if (nn < 0)
            {
                nn *= -1;
            }
            uint n = Convert.ToUInt32(nn);

            // порядок
            ulong d = 1;

            // Перебираем все числа от 0 до n
            for (ulong i = 0; i <= n; i++)
            {
                // вычисления производим только с числами > 1
                if (i > 1)
                {
                    // все автоморфные сичла оканчиваются на 5 или 6, с ростом порядка, соответственно, на 25, 76 и т.д.,
                    // данное условие учитывает окончание только 5 или 6.
                    // На усложнение условий отбора, а в результате - ускорение вычисений, не хватило времени.
                    if (i % 10 == 5 || i % 10 == 6)
                    {
                        // если остаток от деления квадрата числа на порядок равен числу - число автоморфно
                        if ((i * i) % d == i)
                        {
                            Console.WriteLine($"Number: {i} is automorphic; square {i * i}");
                        }
                        // проверяем то же самое, но с большим порядком, в случае успеха увеличиваем порядок
                        else if ((i * i) % (d * 10) == i)
                        {
                            Console.WriteLine($"Number: {i} is automorphic; square {i * i}");
                            d *= 10;
                        }
                    }
                }
                // 0 и 1 по определению являются автоморфными числами
                else if (i == 0 || i == 1)
                {
                    Console.WriteLine($"Number: {i} is automorphic; square {i * i}");
                }
            }
            SupportMethods.Pause("All automorphic numbers here.\nPress any key to continue...");
        }
コード例 #29
0
ファイル: Program.cs プロジェクト: MaxMaxoff/HomeWork2
        /// <summary>
        /// Задание 4
        /// Реализовать метод проверки логина и пароля. На вход подается логин и пароль.
        /// На выходе истина, если прошел авторизацию, и ложь, если не прошел(Логин:root, Password:GeekBrains).
        /// Используя метод проверки логина и пароля, написать программу: пользователь вводит логин и пароль, программа пропускает его дальше или не пропускает.
        /// С помощью цикла do while ограничить ввод пароля тремя попытками.
        /// </summary>
        static void Task4()
        {
            //Clear console and print info regarding current task
            SupportMethods.PrepareConsoleForHomeTask("Реализовать метод проверки логина и пароля. На вход подается логин и пароль.\n" +
                                                     "На выходе истина, если прошел авторизацию, и ложь, если не прошел(Логин:root, Password:GeekBrains).\n" +
                                                     "Используя метод проверки логина и пароля, написать программу: пользователь вводит логин и пароль, программа пропускает его дальше или не пропускает.\n" +
                                                     "С помощью цикла do while ограничить ввод пароля тремя попытками.");

            int  maxattempts = 3;
            bool up          = SupportMethods.RequestUsernamePassword("root", "GeekBrains", maxattempts);

            //Output result of work using SupportMethods.Pause
            SupportMethods.Pause(up ? "Аутентификация успешна!" : "Аутентификация не выполнена!");
        }
コード例 #30
0
        public static string RemoveThisExeArg(string args)
        {
            string[] argsAsArr = SupportMethods.CommandLineToArgs(args, true, true);        // 3rd arg calls RemoveThisExeArg accepting a string[]

            // Glue back together the result
            string all = "";

            foreach (string s in argsAsArr)
            {
                all += s + " ";
            }

            return(all);
        }