static void Task11() { /*11. С клавиатуры вводятся числа, пока не будет введён 0. Подсчитать среднее арифметическое всех * положительных чётных чисел, оканчивающихся на 8.*/ int num, count = 0, sum = 0; do { FC.Input("Введите число или 0 для выхода", out num); if (num > 0 && num % 10 == 8) { sum += num; count++; } } while (num != 0); if (count > 0) { Console.WriteLine($"Среднее арифметическое положительных чисел оканчивающихся на 8: {sum / count:D}"); } else { Console.WriteLine($"Нет чисел, удовлетворяющих условию"); } FC.Pause(); }
static void Task03() { //Определить является ли одна строка перестановкой другой строки string str1 = FC.Input("Введите первую строку").ToUpper(); string str2 = FC.Input("Введите вторую строку").ToUpper(); if (str1.Length == str2.Length) { StringBuilder sb = new StringBuilder(str2); foreach (char ch1 in str1) { //str2.Remove(str2.IndexOf(ch1), 1); for (int i = 0; i < sb.Length; i++) { if (ch1 == sb[i]) { sb.Remove(i, 1); break; } } } Console.WriteLine("Строки " + (sb.Length == 0 ? "" : "не ") + "являются перестановкой друг друга"); } else { Console.WriteLine("Строки имеют разную длину"); } FC.Pause(); }
static void Task04() { //4. Написать программу нахождения корней заданного квадратного уравнения. FC.Input("Введите a", out int a); FC.Input("Введите b", out int b); FC.Input("Введите c", out int c); Console.WriteLine($"Квадратное уравнение: {a}x^2+({b}x)+({c})=0"); double D = b * b - 4 * a * c; double res1, res2; if (D > 0) { res1 = (-b + Math.Sqrt(D)) / (2 * a); res2 = (-b - Math.Sqrt(D)) / (2 * a); Console.WriteLine($"Корни уравнения x1={res1}, x2={res2}"); } else if (D == 0) { res1 = -b / 2 * a; Console.WriteLine($"Корень уравнения x={res1}"); } else { Console.WriteLine("Уравнение не имеет корней"); } FC.Pause(); }
static void Task14() { /*14. * Автоморфные числа. Натуральное число называется автоморфным, если оно равно последним * цифрам своего квадрата. Например, 25^2 = 625. Напишите программу, которая получает на * вход натуральное число N и выводит на экран все автоморфные числа, не превосходящие N.*/ int temp, count; double square, ost; FC.Input("Введите число", out int N); Console.WriteLine("Автоморфные числа: "); for (int i = 1; i <= N; i++) { count = 1; temp = i; while (temp > 0) { count *= 10; temp /= 10; } square = Math.Pow(i, 2); ost = square % count; if (i == ost) { Console.Write(i + " "); } } FC.Pause(); }
static void Task06() { /*6. Ввести возраст человека (от 1 до 150 лет) * и вывести его вместе со словом «год», «года» или «лет».*/ FC.Input("Введите возраст", out int age); string years; int temp = age % 100; if ((temp > 10 && temp < 15)) { years = "лет"; } else { temp = age % 10; if (temp == 1) { years = "год"; } else if (temp > 1 && temp < 5) { years = "года"; } else { years = "лет"; } } Console.WriteLine($"Возраст {age} {years}"); FC.Pause(); }
static void Task02() { //Подсчитать сумму нечетных положительных чисел int sum = 0; string str = string.Empty; FC.Input("Введите число", out int x); str += x; if (x % 2 == 1) { sum += x; } do { FC.Input("Введите число", out x); str += ", " + x; if (x % 2 == 1) { sum += x; } } while (x != 0); Console.WriteLine("Введенные числа: " + str); Console.WriteLine("Сумма нечетных положительных чисел равна: " + sum); FC.Pause(); }
static void Task01() { /*1. Ввести вес и рост человека. * Рассчитать и вывести индекс массы тела по формуле I = m / (h * h), где * m – масса тела в килограммах, h – рост в метрах.*/ FC.Input("Введите массу тела в кг", out int weight); FC.Input("Введите рост в метрах", out double height); Console.WriteLine($"Индекс массы тела равен: {weight / (height * height):#.##}"); FC.Pause(); }
static void Task02() { MyString myString = new MyString(FC.Input("Введите строку")); Console.WriteLine("Слова не длиннее 5 букв"); myString.Print(5); myString.Delete('а'); myString.Max(); FC.Pause(); }
static void Task08() { //8. Ввести a и b и вывести квадраты и кубы чисел от a до b. FC.Input("Введите a", out int a); FC.Input("Введите b", out int b); for (int i = a; i <= b; i++) { Console.WriteLine($"x={i,5} : x^2={i * i,5} : x^3={i * i * i,5}"); } FC.Pause(); }
static void Task01() { //Проверка корректности ввода логина. (от 2х до 10ти символов, содержит только буквы и цифры, цифра не может быть первой) string login; do { login = FC.Input("Введите логин или exit для выхода"); Console.WriteLine(Login.IsCorrect(login) ? "Логин корректен" : "Логин некорректен"); Console.WriteLine(Login.IsCorrectReg(login) ? "Логин корректен" : "Логин некорректен"); } while (login != "exit"); }
static void Task05() { //Реализовать алгоритм перевода из инфиксной записи арифметического выражения в постфиксную.(Обратную польскую) string str = FC.Input("Введите арифметическое выражение"); string outStr = string.Empty; char lastChar = ' '; Stack <char> stack = new Stack <char>(); foreach (char ch in str) { if (char.IsDigit(ch)) { outStr += ch; } else if (ch == '(') { stack.Push(ch); lastChar = '('; } else if (ch == ')') { char temp; do { temp = stack.Pop(); if (temp != '(') { outStr += temp; } } while (temp != '('); } else { outStr += ' '; if (Priority(ch) <= Priority(lastChar)) { outStr += stack.Pop(); outStr += ' '; } stack.Push(ch); lastChar = ch; } } while (stack.Count != 0) { outStr += stack.Pop(); outStr += ' '; } Console.WriteLine("Обратная польская запись:"); Console.WriteLine(outStr); FC.Pause(); }
static void Task03() { /*3. Написать программу обмена значениями двух целочисленных переменных: * a. С использованием третьей переменной. * b. *Без использования третьей переменной.*/ FC.Input("Введите первое число", out int a); FC.Input("Введите второе число", out int b); a = a + b; b = a - b; a = a - b; Console.WriteLine($"Первое число: {a}, второе число: {b}"); FC.Pause(); }
static void Task01() { //Реализовать простейшую хэш-функцию. //На вход функции подается строка, на выходе получается сумма кодов символов. string str = FC.Input("Введите строку"); int hash = 0; foreach (char ch in str) { hash += ch; } Console.WriteLine("Hash function: " + hash); FC.Pause(); }
static void Task07() { /*7. С клавиатуры вводятся числовые координаты двух полей шахматной доски * (x1, y1, x2, y2). * Требуется определить, относятся ли к поля к одному цвету или нет.*/ FC.Input("Введите x1", out int x1); FC.Input("Введите y1", out int y1); FC.Input("Введите x2", out int x2); FC.Input("Введите y2", out int y2); bool flag = (x1 + y1) % 2 == (x2 + y2) % 2; Console.WriteLine("Поля " + (flag ? "" : "не ") + "относятся к одному цвету"); FC.Pause(); }
static void Selection() { //Сортировка выбором FC.Input("Введите размер массива", out int num); int[] array = new int[num]; Random rnd = new Random(); for (int i = 0; i < array.Length; i++) { array[i] = rnd.Next(1, 100); } Console.WriteLine("\nКоличество операций: " + SelectionSortClass.SelectionSort(array)); Console.ReadLine(); }
static void Shaker() { //Шейкерная сортировка FC.Input("Введите размер массива", out int num); int[] array = new int[num]; Random rnd = new Random(); for (int i = 0; i < array.Length; i++) { array[i] = rnd.Next(1, 100); } Console.WriteLine("\nКоличество операций: " + CocktailShakerSort.ShakerSort(array)); Console.ReadLine(); }
static void Task02() { //Бинарное дерево string path = FC.Input("Укажите путь к файлу"); if (!File.Exists(path)) { Console.WriteLine("Файл не найден!"); FC.Pause(); return; } BinaryTree binaryTree = new BinaryTree(path); binaryTree.Find(); }
static void Task09() { /*9. Даны целые положительные числа N и K. Используя только операции сложения и вычитания, найти * частное от деления нацело N на K, а также остаток от этого деления.*/ FC.Input("Введите первое число", out int N); FC.Input("Введите второе число", out int K); int count = 0; while (N > K) { N -= K; count++; } Console.WriteLine($"N делить на K:\nЧастное - {count}\nОстаток - {N}"); FC.Pause(); }
static void Binary() { //Бинарный поиск FC.Input("Введите размер массива", out int num); int[] array = new int[num]; Random rnd = new Random(); for (int i = 0; i < array.Length; i++) { array[i] = rnd.Next(1, 100); } Array.Sort(array); FC.Input("Введите искомое значение", out int target); Console.WriteLine("Результат: " + BinarySearchClass.BinarySearch(array, target)); FC.Pause(); }
static void Task12() { //12. Написать функцию нахождения максимального из трёх чисел. FC.Input("Введите первое число", out int max); FC.Input("Введите второе число", out int b); FC.Input("Введите третье число", out int c); if (max < b) { max = b; } if (max < c) { max = c; } Console.WriteLine($"Максимальное число {max}"); FC.Pause(); }
static void Task01() { //Реализовать перевод из десятичной в двоичную систему счисления с использованием стека. FC.Input("Введите число", out int num); Stack <int> stack = new Stack <int>(); do { stack.Push(num % 2); num /= 2; } while (num != 0); while (stack.Count != 0) { Console.Write(stack.Pop()); } FC.Pause(); }
static void SortCompare() { //Сравнение эффективности сортировок FC.Input("Введите размер массива", out int num); int[] array = new int[num]; Random rnd = new Random(); for (int i = 0; i < array.Length; i++) { array[i] = rnd.Next(1, 100); } Console.WriteLine("Сортировка пузырьком"); Console.WriteLine("\nКоличество операций: " + BubbleSort.BubbleSortSimple(array)); Console.ReadLine(); Console.WriteLine("Оптимизированная сортировка пузырьком"); Console.WriteLine("\nКоличество операций: " + BubbleSort.BubbleSortOptimized(array)); Console.ReadLine(); Console.WriteLine("Шейкерная сортировка"); Console.WriteLine("\nКоличество операций: " + CocktailShakerSort.ShakerSort(array)); Console.ReadLine(); Console.WriteLine("Сортировка выбором"); Console.WriteLine("\nКоличество операций: " + SelectionSortClass.SelectionSort(array)); Console.ReadLine(); Console.WriteLine("Сортировка LINQ"); DateTime start = DateTime.Now; var posNums = array.OrderBy(o => o); //var posNums = from n in array // orderby n // select n; TimeSpan total = DateTime.Now - start; foreach (int i in posNums) { Console.Write(i + " "); } Console.WriteLine("\nВремя работы алгоритма: " + total.TotalMilliseconds); Console.ReadLine(); }
static void Task10() { /*10. Дано целое число N > 0. С помощью операций деления нацело и взятия остатка от деления * определить, имеются ли в записи числа N нечётные цифры. Если имеются, то вывести True, если нет * – вывести False.*/ FC.Input("Введите число", out int N); bool flag = false; while (N > 0) { if ((N % 10) % 2 == 0) { flag = true; break; } N /= 10; } Console.WriteLine(flag.ToString()); FC.Pause(); }
static void Bubble() { //Сортировка пузырьком и оптимизированная сортировка пузырьком FC.Input("Введите размер массива", out int num); int[] array = new int[num]; Random rnd = new Random(); for (int i = 0; i < array.Length; i++) { array[i] = rnd.Next(1, 100); } //BubbleSort bubbleSort = new BubbleSort(num); Console.WriteLine("Сортировка пузырьком"); Console.WriteLine("\nКоличество операций: " + BubbleSort.BubbleSortSimple(array)); Console.ReadLine(); Console.WriteLine("Оптимизированная сортировка пузырьком"); Console.WriteLine("\nКоличество операций: " + BubbleSort.BubbleSortOptimized(array)); FC.Pause(); }
static void Task03() { //Логин пароль int x = 0; do { string login = FC.Input("Введите логин"); string password = FC.Input("Введите пароль"); if (IsValid(login, password)) { Console.WriteLine("Успех!"); FC.Pause(); return; } x++; Console.WriteLine($"Неверный логин или пароль, попыток осталось: {3-x}"); } while (x != 3); Console.WriteLine("Access Denied"); FC.Pause(); }
static void Task03() { //Написать программу, которая определяет, является ли введённая скобочная последовательность правильной. string str = FC.Input("Введите скобочную последовательность"); char temp; Stack <char> stack = new Stack <char>(); foreach (char ch in str) { if (ch == '(' || ch == '[' || ch == '{') { stack.Push(ch); } else if (ch == ')' || ch == ']' || ch == '}') { if (stack.Count == 0) { Console.WriteLine("Количество открывающихся скобок не равно количеству закрывающихся"); FC.Pause(); return; } temp = stack.Pop(); if (ch - temp > 2 || ch - temp < 1) { Console.WriteLine("Скобочная последовательность не правильная"); FC.Pause(); return; } } } if (stack.Count > 0) { Console.WriteLine("Количество открывающихся скобок не равно количеству закрывающихся"); } else { Console.WriteLine("Скобочная последовательность правильная!"); } FC.Pause(); }
static void Task02() { //2. Найти максимальное из четырёх чисел. Массивы не использовать. FC.Input("Введите первое число", out int max); FC.Input("Введите второе число", out int b); FC.Input("Введите третье число", out int c); FC.Input("Введите четвертое число", out int d); if (max < b) { max = b; } if (max < c) { max = c; } if (max < d) { max = d; } Console.WriteLine($"Максимальное число: {max}"); FC.Pause(); }
static void Task05() { /*5. С клавиатуры вводится номер месяца. * Требуется определить, к какому времени года он относится.*/ FC.Input("Введите номер месяца", out int month); switch (month) { case 1: case 2: case 12: Console.WriteLine("Зима"); break; case 3: case 4: case 5: Console.WriteLine("Весна"); break; case 6: case 7: case 8: Console.WriteLine("Лето"); break; case 9: case 10: case 11: Console.WriteLine("Осень"); break; default: Console.WriteLine("Необходимо ввести число от 1 до 12"); break; } FC.Pause(); }