/// <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}"); }
/// <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()}"); }
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); }
/// <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!"); } }
/// <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..."); }
/// <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}"); }
/// <summary> /// 1. Реализовать простейшую хэш-функцию. На вход функции подается строка, на выходе сумма кодов символов. /// </summary> static void Task1() { SupportMethods.PrepareConsoleForHomeTask("1. Реализовать простейшую хэш-функцию. На вход функции подается строка, на выходе сумма кодов символов.\n"); string str = SupportMethods.RequestString("Please type string: "); SupportMethods.Pause($"Hash: {HashFunction(str)}"); }
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); }
/// <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(); }
/// <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(); }
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; } }
/// <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(); }
/// <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); }
/// <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 Попробуйте еще раз!"); } }
/// <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..."); } }
/// <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); }
/// <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"); } }
static void Main(string[] args) { //SupportMethods.printTestErrors("zenotravel", true); return; //RunFakeNetworks(args); SupportMethods.storeStatesForTraining("blocks", PADD.DomainDependentSolvers.DomainType.Blocks, new List <HeuristicType>() { HeuristicType.FF }); }
/// <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()}"); }
/// <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); }
/// <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"); } }
/// <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)}"); }
// + -- // + ++ 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; } }
/// <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()); }
/// <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); }
/// <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); }
/// <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)}"); }
/// <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..."); }
/// <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 ? "Аутентификация успешна!" : "Аутентификация не выполнена!"); }
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); }