Example #1
0
 public static void Calc()
 {
     FC.Input("Введите a", out int a);
     FC.Input("Введите b", out int b);
     CalcRec(a, b);
     Console.WriteLine($"Кол-во вариантов: {counter}, общее количество запусков функции {k}");
     CalcNoRec(a, b);
     FC.Pause();
 }
Example #2
0
 /*2. Реализовать функцию возведения числа a в степень b:
 * a. Без рекурсии.
 * b. Рекурсивно.
 * c. *Рекурсивно, используя свойство чётности степени.*/
 public static void Pow()
 {
     FC.Input("Введите a", out int a);
     FC.Input("Введите b", out int b);
     PowNoRec(a, b);
     PowRec(1, a, b);
     PowRecFast(1, a, b);
     FC.Pause();
 }
Example #3
0
 public static void Convert()
 {
     FC.Input("Введите число в десятичной системе счисления", out int num);
     DecToBin(num);
     foreach (int n in list)
     {
         Console.Write(n);
     }
     FC.Pause();
 }
Example #4
0
        public static void Route()
        {
            /* За один ход королю разрешается передвинуться на одну клетку вниз или вправо.
             * Необходимо определить, сколько существует различных маршрутов,
             * из левого верхнего угла в правый нижний.
             * Подсчитать количество маршрутов с препятствиями.
             * Реализовать чтение массива с препятствием и найти количество маршрутов.*/
            FC.Input("Введите количество строк", out int n);
            FC.Input("Введите количество столбцов", out int m);
            int[,] A   = new int[n, m];
            int[,] map = new int[n, m];
            //Формируем массив с препятствиями
            Random random = new Random();
            int    temp;

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    temp      = random.Next(0, 10);
                    map[i, j] = temp != 0 ? 1 : 0;
                }
            }
            Print(map);
            Console.WriteLine();

            //Заполняем массив количеством маршрутов до каждой клетки
            if (map[0, 0] != 0)
            {
                A[0, 0] = 1;
            }
            for (int j = 1; j < m; j++)
            {
                if (map[0, j] != 0)
                {
                    A[0, j] = A[0, j - 1];
                }
            }
            for (int i = 1; i < n; i++)
            {
                if (map[i, 0] != 0)
                {
                    A[i, 0] = A[i - 1, 0];
                }
                for (int j = 1; j < m; j++)
                {
                    if (map[i, j] != 0)
                    {
                        A[i, j] = A[i - 1, j] + A[i, j - 1];
                    }
                }
            }
            Print(A);
            FC.Pause();
        }
Example #5
0
        static void Main(string[] args)
        {
            Graphs graphs = new Graphs("graph.txt");

            graphs.PrintMatrix();
            FC.Input("Введите номер стартовой вершины", out int num);
            graphs.Dijkstra(num);
            FC.Input("Введите номер конечной вершины", out num);
            graphs.FindShortPath(num);
            Console.ReadLine();
        }
Example #6
0
        public void Find()
        {
            //Выбор метода поиска
            int type;

            do
            {
                do
                {
                    Console.Clear();
                    Console.WriteLine("Выберите тип обхода дерева:");
                    Console.WriteLine("1 - КЛП (pre-order)");
                    Console.WriteLine("2 - ЛКП (in-order)");
                    Console.WriteLine("3 - ЛПК (post-order)");
                    Console.WriteLine("0 - Выход");
                } while (!int.TryParse(Console.ReadLine(), out type));
                if (type == 0)
                {
                    return;
                }
            } while (type > 3 || type < 1);

            Print();

            FC.Input("\nВведите искомое число", out int num);

            //Запус выбранного метода поиска
            switch (type)
            {
            case 1:
                FindPreOrder(num);
                break;

            case 2:
                FindInOrder(num);
                break;

            case 3:
                FindPreOrder(num);
                break;

            default:
                break;
            }
            FC.Pause();
        }