//Добавить объект private void Add() { string[] addMenu = { "Добавить монархию", "Добавить королевство", "Добавить республику", "Назад" }; while (true) { var sw = LiveMenu.Menu("Выберите действие:", addMenu); StateInterface state; switch (sw) { case 0: Console.WriteLine("Введите монархию для добавления: "); state = new Monarchy(); state.Input(); _states.Add(state.Return_Name() + " " + state.Return_GDP(), state); Console.WriteLine("Объект успешно добавлен.\n\n\nДля продолженния нажать на любую клавишу..."); Console.ReadKey(true); break; case 1: Console.WriteLine("Введите королевство для добавления:"); state = new Kingdom(); state.Input(); _states.Add(state.Return_Name() + " " + state.Return_GDP(), state); Console.WriteLine("Объект успешно добавлен.\n\n\nДля продолженния нажать на любую клавишу..."); Console.ReadKey(true); break; case 2: Console.WriteLine("Введите республику для добавления:"); state = new Republic(); state.Input(); _states.Add(state.Return_Name() + " " + state.Return_GDP(), state); Console.WriteLine("Объект успешно добавлен.\n\n\nДля продолженния нажать на любую клавишу..."); Console.ReadKey(true); break; case 3: return; } } }
private static void Clone(State[] state) //Клонирование коллекции { if (state[0] == null) { Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine("\n Коллекция пуста, операция невозможна."); Console.ForegroundColor = ConsoleColor.White; } else { Monarchy[] monarchy = ToMonarchy(state); Monarchy clone = new Monarchy(); Console.ForegroundColor = ConsoleColor.Blue; Console.Write("Объект для поверхностного копирования: "); Console.ForegroundColor = ConsoleColor.White; monarchy[0].Show(); Console.WriteLine(""); Console.ForegroundColor = ConsoleColor.Blue; Console.Write("Объект для глубокого копирования: "); Console.ForegroundColor = ConsoleColor.White; monarchy[1].Show(); Console.WriteLine(""); Console.ForegroundColor = ConsoleColor.Blue; Console.Write("Поверхностное копирование: "); Console.ForegroundColor = ConsoleColor.White; clone = monarchy[0].SurfaceCopying(); clone.Show(); Console.WriteLine(""); Console.ForegroundColor = ConsoleColor.Blue; Console.Write("Глубокое копирование: "); Console.ForegroundColor = ConsoleColor.White; clone = (Monarchy)monarchy[1].Clone(); clone.Show(); Console.WriteLine(""); Console.Write("\n " + end); } }
private static State[] CreateCollection() //Создание коллекции { State.counter = 0; //обнуление счетчика при повторном создании коллекции State[] state = new State[50]; for (int i = 0; i < state.Length; i++) { int check = rnd.Next(1, 4); if (check == 1) { state[i] = new Republic(R_TYPE[rnd.Next(0, R_TYPE.Length)], NAME[rnd.Next(0, NAME.Length)], rnd.Next(477, 977)); } else { if (check == 2) { state[i] = new Monarchy(M_TYPE[rnd.Next(0, M_TYPE.Length)], NAME[rnd.Next(0, NAME.Length)], rnd.Next(388, 844)); } else { state[i] = new Kingdom(M_TYPE[rnd.Next(0, M_TYPE.Length)], NAME[rnd.Next(0, NAME.Length)], rnd.Next(322, 712), MONARCH[rnd.Next(0, MONARCH.Length)], CONTINENT[rnd.Next(0, CONTINENT.Length)]); } } } Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(" Коллекция создана!"); Console.ForegroundColor = ConsoleColor.White; Console.Write("\n " + end); return(state); }
//Создать массив public static StateInterface[] CreateArray(int size) { var state = new StateInterface[size]; var i = 0; while (i < state.Length) { var check = Rnd.Next(1, 4); StateInterface currentState; if (check == 1) { currentState = new Monarchy(monarchyTypes[Rnd.Next(0, monarchyTypes.Length)], NAME[Rnd.Next(0, NAME.Length)], Rnd.Next(277, 833)); } else { if (check == 2) { currentState = new Kingdom(monarchyTypes[Rnd.Next(0, monarchyTypes.Length)], NAME[Rnd.Next(0, NAME.Length)], Rnd.Next(277, 833), MONARCH[Rnd.Next(0, MONARCH.Length)], CONTINENT[Rnd.Next(0, CONTINENT.Length)]); } else { currentState = new Republic(republicTypes[Rnd.Next(0, republicTypes.Length)], NAME[Rnd.Next(0, NAME.Length)], Rnd.Next(344, 966)); } } if (Contains(currentState, state)) { } else { state[i] = currentState; i++; } } return(state); }
private static Monarchy[] ToMonarchy(State[] state) //из State в Monarchy { Monarchy[] monarchies = null; foreach (State element in state) { if (element is Monarchy kingdom) { if (monarchies == null) { monarchies = new Monarchy[1]; } else { Array.Resize(ref monarchies, monarchies.Length + 1); } monarchies[monarchies.Length - 1] = kingdom; } } return(monarchies); }
private static void FindState(StateInterface[] state) //Поиск объекта в коллекции { Array.Sort(state, new SortByGDP()); bool ok = true; while (ok) { int index; int choice = LiveMenu.Menu(headlines[1], search); switch (choice) { case 0: Monarchy monarchy = new Monarchy(); monarchy.Input(); index = Array.BinarySearch(state, monarchy); try { Monarchy tmp = state[index] as Monarchy; Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\n Искомый объект: "); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(); tmp.Show(); Console.WriteLine(); Console.Write("\n Номер объекта в коллекции: {0}", index + 1); Console.WriteLine(); } catch { Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\n Искомый объект: "); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(); monarchy.Show(); Console.ForegroundColor = ConsoleColor.DarkRed; Console.Write("\n Отсутствует в коллекции."); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(); } Console.Write("\n" + end); Console.ReadLine(); break; case 1: Kingdom kingdom = new Kingdom(); kingdom.Input(); index = Array.BinarySearch(state, kingdom); try { Kingdom tmp = state[index] as Kingdom; Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\n Искомый объект: "); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(); tmp.Show(); Console.WriteLine(); Console.Write("\n Номер объекта в коллекции: {0}", index + 1); Console.WriteLine(); } catch { Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\n Искомый объект: "); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(); kingdom.Show(); Console.ForegroundColor = ConsoleColor.DarkRed; Console.Write("\n Отсутствует в коллекции."); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(); } Console.Write("\n" + end); Console.ReadLine(); break; case 2: Republic republic = new Republic(); republic.Input(); index = Array.BinarySearch(state, republic); try { Republic tmp = state[index] as Republic; Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\n Искомый объект: "); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(); tmp.Show(); Console.WriteLine(); Console.Write("\n Номер объекта в коллекции: {0}", index + 1); Console.WriteLine(); } catch { Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\n Искомый объект: "); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(); republic.Show(); Console.ForegroundColor = ConsoleColor.DarkRed; Console.Write("\n Отсутствует в коллекции."); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(); } Console.Write("\n" + end); Console.ReadLine(); break; case 3: ok = false; break; } } }
public static ArrayList Add(ref State[] arr) //Добавление объекта в коллекцию { bool ok = true; ArrayList STATE = new ArrayList(); while (ok) { int choice = LiveMenu.Menu(headlines[1], autoHand); switch (choice) { case 0: STATE.AddRange(arr); int decision = LiveMenu.Menu(headlines[1], addInfo); switch (decision) { case 0: Monarchy monarchy = new Monarchy(); monarchy.Input(); STATE.Add(monarchy); break; case 1: Kingdom kingdom = new Kingdom(); kingdom.Input(); STATE.Add(kingdom); break; case 2: Republic republic = new Republic(); republic.Input(); STATE.Add(republic); break; case 3: break; } Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(" Объект успешно добавлен."); Console.ForegroundColor = ConsoleColor.White; Console.Write("\n " + end); Console.ReadLine(); return(STATE); case 1: int k = rnd.Next(1, 4); STATE.AddRange(arr); if (k == 1) { Republic newState = new Republic(); STATE.Add(newState); } if (k == 2) { Monarchy newState = new Monarchy(); STATE.Add(newState); } if (k == 3) { Kingdom newState = new Kingdom(); STATE.Add(newState); } Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(" Объект успешно добавлен."); Console.ForegroundColor = ConsoleColor.White; Console.Write("\n " + end); Console.ReadLine(); return(STATE); } } return(STATE); }
//Удалить объект private void Delete(out int k) { string[] addMenu = { "Удалить монархию", "Удалить королевство", "Удалить республику", "Назад" }; k = 0; while (true) { var sw = LiveMenu.Menu("Выберите действие:", addMenu); StateInterface state; switch (sw) { case 0: Console.WriteLine("Введите монархию для удаления:"); state = new Monarchy(); state.Input(); if (!_states.ContainsKey(state.Return_Name() + " " + state.Return_GDP())) { Console. WriteLine("Объект для удаления отсутсвует в словаре.\n\n\nДля продолженния нажать на любую клавишу..."); Console.ReadKey(true); } else { _states.Remove(state.Return_Name() + " " + state.Return_GDP()); Console. WriteLine("Объект успешно удален.\n\n\nДля продолженния нажать на любую клавишу..."); Console.ReadKey(true); } if (_states.Count == 0) { k = 6; return; } break; case 1: Console.WriteLine("Введите королевство для удаления:"); state = new Kingdom(); state.Input(); if (!_states.ContainsKey(state.Return_Name() + " " + state.Return_GDP())) { Console. WriteLine("Объект для удаления отсутсвует в словаре.\n\n\nДля продолженния нажать на любую клавишу..."); Console.ReadKey(true); } else { _states.Remove(state.Return_Name() + " " + state.Return_GDP()); Console. WriteLine("Объект успешно удален.\n\n\nДля продолженния нажать на любую клавишу..."); Console.ReadKey(true); } if (_states.Count == 0) { k = 6; return; } break; case 2: Console.WriteLine("Введите республику для удаления:"); state = new Republic(); state.Input(); if (!_states.ContainsKey(state.Return_Name() + " " + state.Return_GDP())) { Console. WriteLine("Объект для удаления отсутсвует в словаре.\n\n\nДля продолженния нажать на любую клавишу..."); Console.ReadKey(true); } else { _states.Remove(state.Return_Name() + " " + state.Return_GDP()); Console. WriteLine("Объект успешно удален.\n\n\nДля продолженния нажать на любую клавишу..."); Console.ReadKey(true); } if (_states.Count == 0) { k = 6; return; } break; case 3: return; } } }
//Тип поиска private void TypeFind() { string[] queriesMenu = { "Поиск элемента типа Monarchy", "Поиск элемента типа Kingdom", "Поиск элемента типа Republic", "Назад" }; while (true) { var sw = LiveMenu.Menu("Выберите нужную опцию:", queriesMenu); switch (sw) { case 0: StateInterface state = new Monarchy(); state.Input(); if (_states.ContainsKey(state.Return_Name() + " " + state.Return_GDP())) { Console.WriteLine("\nОбъект найден: "); Console.WriteLine("\n{0}.\n\n\nДля продолженния нажать на любую клавишу...", _states[state.Return_Name() + " " + state.Return_GDP()]); } else { Console.WriteLine("Заданный объект не был найден в стэке.\n\n\nДля продолженния нажать на любую клавишу..."); } Console.ReadKey(true); break; case 1: state = new Kingdom(); state.Input(); if (_states.ContainsKey(state.Return_Name() + " " + state.Return_GDP())) { Console.WriteLine("\nОбъект найден: "); Console.WriteLine("\n{0}.\n\n\nДля продолженния нажать на любую клавишу...", _states[state.Return_Name() + " " + state.Return_GDP()]); } else { Console.WriteLine("Заданный объект не был найден в стэке.\n\n\nДля продолженния нажать на любую клавишу..."); } Console.ReadKey(true); break; case 2: state = new Republic(); state.Input(); if (_states.ContainsKey(state.Return_Name() + " " + state.Return_GDP())) { Console.WriteLine("\nОбъект найден: "); Console.WriteLine("\n{0}.\n\n\nДля продолженния нажать на любую клавишу...", _states[state.Return_Name() + " " + state.Return_GDP()]); } else { Console.WriteLine("Заданный объект не был найден в стэке.\n\n\nДля продолженния нажать на любую клавишу..."); } Console.ReadKey(true); break; case 3: return; } } }