public static int ProverkaVvoda() { int number; bool res; do { res = int.TryParse(Console.ReadLine(), out number); if (res == false) { Text_Dialog.ErrorMenu(); } } while (!res); return(number); }
//----------------------------------------------------------------------------------------------------------- static void Main(string[] args) { Console.Clear(); do { Console.WriteLine("\n----------------------------------"); Console.WriteLine("| Выберите следующее действие: |"); Console.WriteLine("| 1) Однонаправленные списки |"); Console.WriteLine("| 2) Двунаправленные списки |"); Console.WriteLine("| 3) Бинарное дерево |"); Console.WriteLine("| 0) Выход из консоли |"); Console.WriteLine("----------------------------------"); Console.Write("Действие: "); int MainMenu = Search_for_Bugs.ProverkaVvoda(); switch (MainMenu) { case 1: Console.Clear(); Point(args); break; case 2: Console.Clear(); PointTwo(args); break; case 3: Console.Clear(); Tree(args); break; case 0: Console.Clear(); Console.WriteLine(" "); Console.WriteLine("Завершение работы..."); Thread.Sleep(900); Environment.Exit(0); break; default: Text_Dialog.MainError(); continue; } } while (true); }
static Tree CreateTree(Tree tree, int size, string[] args) { do { Text_Dialog.FormList(); int how = Search_for_Bugs.ProverkaVvoda(); switch (how) { case 1: tree = IdealTreeRnd(size, tree); break; case 2: tree = IdealTree(size); break; case 9: Console.Clear(); Main(args); break; case 0: Console.Clear(); Console.WriteLine(" "); Console.WriteLine("Завершение работы..."); Thread.Sleep(900); Environment.Exit(0); break; default: Text_Dialog.MainError(); continue; } } while (!true); return(tree); }
static void Tree(string[] args) { Tree tree = null; string[] arr = new string[999999]; int pos = 0; int size = 0; do { Console.WriteLine("\n-----------------------------------------------------------"); Console.WriteLine("| Выберите следующее действие: |"); Console.WriteLine("| 1) Сформировать идеально сбалансированное дерево |"); Console.WriteLine("| 2) Найти количество листьев в дереве |"); Console.WriteLine("| 3) Преобразовать в дерево поиска |"); Console.WriteLine("| 4) Вывести дерево на экран |"); Console.WriteLine("| 9) В главное меню |"); Console.WriteLine("| 0) Выход |"); Console.WriteLine("-----------------------------------------------------------"); Console.Write("Действие: "); int Menu = Search_for_Bugs.ProverkaVvoda(); switch (Menu) { case 1: { Console.Clear(); Console.WriteLine("---------------Формирование дерева----------------"); Console.WriteLine("Введите количество элементов в дереве:"); size = IntRND(1, 999999, "Ошибка, некорректный ввод!"); tree = CreateTree(tree, size, args); Console.Clear(); Console.WriteLine("-------------------Дерево-------------------"); ShowTree(tree); Console.WriteLine("--------------------------------------------"); break; } case 2: if (tree == null) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Дерево пустое!!!"); Console.ResetColor(); continue; } BeginSearchIdealTree(tree); break; case 3: if (tree == null) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Дерево пустое!!!"); Console.ResetColor(); continue; } else { CompileTree(ref arr, ref pos, tree); tree = TreeTransform(tree, null); Console.Clear(); Console.WriteLine("-------------------Дерево-------------------"); ShowTree(tree); Console.WriteLine("--------------------------------------------"); break; } case 4: if (tree == null) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Дерево пустое!!!"); Console.ResetColor(); continue; } else { Console.Clear(); Console.WriteLine("-------------------Дерево-------------------"); ShowTree(tree); Console.WriteLine("--------------------------------------------"); break; } case 9: Console.Clear(); Main(args); break; case 0: Console.Clear(); Console.WriteLine(" "); Console.WriteLine("Завершение работы..."); Thread.Sleep(900); Environment.Exit(0); break; default: Text_Dialog.MainError(); continue; } } while (true); }
// 5.1 - Формирование нового списка static BiList FormNewList2(string[] args) { Console.WriteLine("----------Формирование двунапраленного списка----------------"); Console.Write("\nВведите число элементов в списке:"); int size = IntRND(1, 999999, "Ошибка, при вводе, повторите!"); int info = 0, LowLimit = 0, HighLimit = 0; BiList beg = null; BiList r = null; BiList p = null; do { Text_Dialog.FormList(); int how = Search_for_Bugs.ProverkaVvoda(); switch (how) { case 1: Console.Write("Введите нижнюю границу:"); LowLimit = Int(); do { Console.Write("Введите верхнюю границу:"); HighLimit = Int(); if (HighLimit < LowLimit) { Console.WriteLine("Верхняя граница не может быть меньше нижней!!!"); } } while (HighLimit < LowLimit); info = rnd.Next(LowLimit, HighLimit); beg = MakePoint2(info); r = beg; for (int i = 1; i < size; i++) { info = rnd.Next(LowLimit, HighLimit); p = MakePoint2(info); r.next = p; p.last = r; r = p; } Console.WriteLine("Список сформирован"); break; case 2: Console.WriteLine("Введите элемент строкового типа под номером 1"); info = Int(); beg = MakePoint2(info); r = beg; for (int i = 1; i < size; i++) { Console.WriteLine("Введите элемент строкового типа под номером {0}", i + 1); info = Int(); p = MakePoint2(info); r.next = p; p.last = r; r = p; } Console.WriteLine("Список сформирован"); break; case 9: Console.Clear(); Main(args); break; case 0: Console.Clear(); Thread.Sleep(900); Console.WriteLine(" "); Console.WriteLine("Завершение работы..."); Environment.Exit(0); break; default: Text_Dialog.MainError(); continue; } } while (!true); return(beg); }
//----------------------------------------------------------------------------------------------------------- //---Двунаправленный список---------------------------------------------------------------------------------- #region static void PointTwo(string[] args) { int SwitchNumber; BiList List2 = null; do { Console.WriteLine("\n--------------------------------------------------------"); Console.WriteLine("| Выберите следующее действие: |"); Console.WriteLine("| 1) Сформировать список |"); Console.WriteLine("| 2) Удалить из текущего списка первый четный элемент |"); Console.WriteLine("| 3) Вывести текущий список на экран |"); Console.WriteLine("| 9) В начало |"); Console.WriteLine("| 0) Выход из консоли |"); Console.WriteLine("--------------------------------------------------------"); Console.Write("Действие: "); SwitchNumber = Search_for_Bugs.ProverkaVvoda(); switch (SwitchNumber) { case 1: Console.Clear(); List2 = FormNewList2(args); Console.Clear(); Console.WriteLine("----------Двунапраленный список----------------\n"); ShowList2(List2); Console.WriteLine("-----------------------------------------------"); break; case 2: Console.Clear(); Console.WriteLine("----------Двунапраленный список----------------\n"); List2 = WorkList2(List2); ShowList2(List2); Console.WriteLine("-----------------------------------------------"); do { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\nУдаление уже произведено!!!"); Console.ResetColor(); Console.WriteLine("\n--------------------------------------------------------"); Console.WriteLine("| Выберите следующее действие: |"); Console.WriteLine("| 1) Сформировать новый список |"); Console.WriteLine("| 2) Вывести текущий список на экран |"); Console.WriteLine("| 9) В начало |"); Console.WriteLine("| 0) Выход из консоли |"); Console.WriteLine("--------------------------------------------------------"); Console.Write("Действие: "); SwitchNumber = Search_for_Bugs.ProverkaVvoda(); switch (SwitchNumber) { case 1: Console.Clear(); List2 = FormNewList2(args); Console.Clear(); Console.WriteLine("----------Двунапраленный список----------------\n"); ShowList2(List2); Console.WriteLine("-----------------------------------------------"); break; case 2: Console.Clear(); Console.WriteLine("----------Двунапраленный список----------------\n"); ShowList2(List2); Console.WriteLine("-----------------------------------------------"); break; case 9: Console.Clear(); Main(args); break; case 0: Console.Clear(); Console.WriteLine(" "); Console.WriteLine("Завершение работы..."); Thread.Sleep(900); Environment.Exit(0); break; default: Text_Dialog.MainError(); continue; } } while (!true); break; case 3: Console.Clear(); Console.WriteLine("----------Двунапраленный список----------------\n"); ShowList2(List2); Console.WriteLine("-----------------------------------------------"); break; case 9: Console.Clear(); Main(args); break; case 0: Console.Clear(); Console.WriteLine(" "); Console.WriteLine("Завершение работы..."); Thread.Sleep(900); Environment.Exit(0); break; default: Text_Dialog.MainError(); continue; } } while (true); }
// 4.1 - Формирование нового списка static Point FormNewList1(string[] args) { Console.WriteLine("----------Формирование однонапраленного списка----------------"); Console.WriteLine("Введите число элементов в списке"); int size = IntRND(1, 999999, "Введенное вами число не может являться числом элементов в списке"); double info = 0, LowLimit = 0, HighLimit = 0; Point beg = null; Point r = null; Point p = null; do { Text_Dialog.FormList(); int how = Search_for_Bugs.ProverkaVvoda(); switch (how) { case 1: Console.Write("Введите нижнюю границу:"); LowLimit = Double(); do { Console.Write("Введите верхнюю границу:"); HighLimit = Double(); if (HighLimit < LowLimit) { Console.WriteLine("Верхняя граница не может быть меньше нижней!!!"); } } while (HighLimit < LowLimit); info = rnd.Next(Convert.ToInt32(LowLimit), Convert.ToInt32(HighLimit)); beg = MakePoint(info); r = beg; for (int i = 1; i < size; i++) { info = rnd.Next(Convert.ToInt32(LowLimit), Convert.ToInt32(HighLimit)); p = MakePoint(info); r.next = p; r = p; } Console.WriteLine("Список успешно сформирован"); break; case 2: Console.WriteLine("Введите элемент вещественного типа под номером 1"); info = Double(); beg = MakePoint(info); r = beg; for (int i = 1; i < size; i++) { Console.WriteLine("Введите элемент вещественного типа под номером {0}", i + 1); info = Double(); p = MakePoint(info); r.next = p; r = p; } Console.WriteLine("Список успешно сформирован"); break; case 9: Console.Clear(); Main(args); break; case 0: Console.Clear(); Thread.Sleep(900); Console.WriteLine(" "); Console.WriteLine("Завершение работы..."); Environment.Exit(0); break; default: Text_Dialog.MainError(); continue; } } while (!true); return(beg); }
//---Однонаправленный список--------------------------------------------------------------------------------- #region // 4. Первое меню (однонаправленный список) static void Point(string[] args) { int SwitchNumber; Point List1 = null; do { Console.WriteLine("\n-----------------------------------------------------------------------------"); Console.WriteLine("| Выберите следующее действие: |"); Console.WriteLine("| 1) Сформировать список |"); Console.WriteLine("| 2) Вставить после каждого отрицательного элемента списка нулевой элемент |"); Console.WriteLine("| 3) Вывести текущий список на экран |"); Console.WriteLine("| 9) В начало |"); Console.WriteLine("| 0) Выход из консоли |"); Console.WriteLine("-----------------------------------------------------------------------------"); Console.Write("Действие: "); SwitchNumber = Search_for_Bugs.ProverkaVvoda(); switch (SwitchNumber) { case 1: Console.Clear(); List1 = FormNewList1(args); Console.Clear(); Console.WriteLine("----------Однонаправленный список--------------\n"); ShowList1(List1); Console.WriteLine("-----------------------------------------------"); break; case 2: Console.Clear(); Console.WriteLine("----------Однонаправленный список--------------\n"); List1 = WorkList1(List1); ShowList1(List1); Console.WriteLine("-----------------------------------------------"); break; case 3: Console.Clear(); Console.WriteLine("----------Однонаправленный список--------------\n"); ShowList1(List1); Console.WriteLine("-----------------------------------------------"); break; case 9: Console.Clear(); Main(args); break; case 0: Console.Clear(); Console.WriteLine(" "); Console.WriteLine("Завершение работы..."); Thread.Sleep(900); Environment.Exit(0); break; default: Text_Dialog.MainError(); continue; } } while (true); }