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 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() { //Найти количество пар эл-ов, в которых хотя бы одно из чисел делится на 3. Random rnd = new Random(); int[] arr = new int[20]; for (int i = 0; i < 20; i++) { arr[i] = rnd.Next(-10000, 10000); } Console.WriteLine("Исходные данные:"); foreach (int i in arr) { Console.Write(i + " "); } Console.WriteLine("\n"); int count = 0; for (int i = 0; i < 19; i++) { if (arr[i] % 3 == 0 || arr[i + 1] % 3 == 0) { count++; Console.WriteLine("Пара эл-ов: " + arr[i] + " " + arr[i + 1]); } } Console.WriteLine("\nКоличество пар: " + count); 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 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 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 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() { //Считать данные из файла, высчитать средний балл, вывести 3х худших, плюс тех у кого одинаковый балл с худшими. Students students = new Students("text.txt"); students.Sort(); students.Show(); FC.Pause(); }
static void Task1() { //Создать метод, который будет выводить значения ф-ий от a до b. Для передачи разных ф-ий использовать делегаты. Console.WriteLine("Таблица функции A*x^2"); Task01.Table(Task01.MyMethod1, 10, -2, 2); Console.WriteLine("Таблица функции A*sin(x)"); Task01.Table(Task01.MyMethod2, 10, -2, 2); 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 Task13() { /*13. * Написать функцию, генерирующую случайное число от 1 до 100: * a. С использованием стандартной функции rand(). * b. Без использования стандартной функции rand().*/ Random random = new Random(); Console.WriteLine($"Стандартная функция Random: {random.Next(1, 100)}"); Console.WriteLine($"Нестандартный Random: {(10 * DateTime.Now.Second + 50) % 100}"); 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 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 Task01() { //Реализовать простейшую хэш-функцию. //На вход функции подается строка, на выходе получается сумма кодов символов. string str = FC.Input("Введите строку"); int hash = 0; foreach (char ch in str) { hash += ch; } Console.WriteLine("Hash function: " + hash); FC.Pause(); }
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 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 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 Task04() { MyDoubleArray myArr = new MyDoubleArray(3, 3); Console.WriteLine(myArr); Console.WriteLine("Sum: " + myArr.Sum()); Console.WriteLine("Sum(>): " + myArr.SumX(20)); Console.WriteLine("Min: " + myArr.Min); Console.WriteLine("Max: " + myArr.Max); myArr.MaxIndex(out int x, out int y); Console.WriteLine($"Индекс максимального элемента: {x},{y}"); MyDoubleArray myArrayText = new MyDoubleArray("test3.txt"); Console.WriteLine(myArrayText); myArrayText.OutPut("test4.txt"); 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 Task03() { Fraction f1 = new Fraction(3, 5); Fraction f2 = new Fraction(4, 3); Fraction f3 = new Fraction(5, 3); Console.WriteLine("Первая дробь f1: " + f1); Console.WriteLine("Вторая дробь f2: " + f2); Console.WriteLine("Третья дробь f3: " + f3); Fraction result = f1 + f2; Console.WriteLine("result = f1 + f2 = " + result); Console.WriteLine("result = result - f3 = " + (result - f3)); result = f1 * f2; Console.WriteLine("f1 * f2 = " + result); Console.WriteLine("f3 / f2 = " + (f3 / f2)); 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 Task02() { //Реализовать класс для работы с массивом, реализовать методы и св-ва для работы с массивом. MyArray myArray = new MyArray(10, 2, 3); Console.WriteLine(myArray); Console.WriteLine(myArray.Sum); myArray.Inverse(); Console.WriteLine(myArray); myArray.Multi(2); Console.WriteLine(myArray); MyArray myArrayText = new MyArray("test.txt"); Console.WriteLine(myArrayText); Console.WriteLine(myArrayText.Max); Console.WriteLine(myArrayText.MaxCount); myArray.Output("test2.txt"); FC.Pause(); }
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(); }