static void Main(String[] args) { //Console.Clear(); var CSet = new Dictionary <int, INumericConverter> { { 0, new RangeIteratorConverter { } }, // Преобразователь на основе двух простых функций. { 1, new SingleFunctionConverter { } }, // Преобразователь, работающий (по возможности) на основе обычных C# методов. { 2, new CSharpEnvironmentConverter { } }, // Простейший текстовый парсер. { 5, new BasicTextParserConverter { } }, }; int CKey = 1; AskNumber: Console.WriteLine("Список преобразователей:"); foreach (var C in CSet) { Console.WriteLine(String.Format(" {0}) {1}", C.Key, C.Value.ConverterName)); } Console.Write("Пожалуйста, введите номер интересующего преобразователя: "); if ( // Пытаемся распознать введенный номер. // Если результат безуспешный, спрашиваем снова. (!int.TryParse(Console.ReadLine(), out CKey)) || // Или если номер введен верно, но такого номера нет в наборе, // то тоже спрашиваем снова. (!CSet.ContainsKey(CKey)) ) { goto AskNumber; } // Тест преобразования числового набора в строку. CTests.IntegerToString(CSet[CKey]); // Тест преобразования строки в числовой набор. CTests.StringToInteger(CSet[CKey]); /* TODO: Пытался предотвратить передачу клавиш в VS после завершения программы, * но пока не придумал быстрого решения. Вспомни, как у тебя было в другом проекте. */ //System.Threading.Thread.Sleep(1000); }
public static void IntegerToString(INumericConverter aConverter) { // // Создание наборов данных. //____________________________________________________________________________________ int[] Set0 = new int[] { }; int[] Set1 = new int[] { 1, 3, 4, 5, 7, 9 }; int[] Set2 = new int[] { 1, 2, 3, 4, 5 }; int[] Set3 = new int[] { 2, 1, 3 }; int[] Set4 = new int[] { 1, 2, 3, 3, 4, 5 }; var Sets = new Dictionary <string, int[]> () { { "Пустой набор", Set0 }, { "Тестовый набор № 1", Set1 }, { "Полностью последовательный набор", Set2 }, { "Ошибочный набор № 1", Set3 }, { "Ошибочный набор № 2", Set4 }, }; Random R = new Random(); for (int N = 1; N <= 0; N++) { Sets.Add ( String.Format("Большой случайный набор № {0}", N), CreateRandomSortedList(R.Next(1, 1024), 1, 9999, R).ToArray() ); } /// /// Обработка наборов. ///____________________________________________________________________________________ foreach (var S in Sets) { CTests.Begin(S.Key); CTests.IntroduceConverterMethod(aConverter, "int[] -> string"); Console.ForegroundColor = ConsoleColor.DarkGray; Console.WriteLine(String.Format ( "Set({0}) = [{1}]", /* 0 */ S.Value.Length, /* 1 */ String.Join(", ", S.Value) )); Console.ResetColor(); Console.Write("Result(int[] -> string) = ["); try { Console.WriteLine(String.Format("{0}]", aConverter.Convert(S.Value, ",", ".."))); } catch (Exception E) { Console.ForegroundColor = ConsoleColor.DarkRed; Console.Write("Error"); Console.ResetColor(); Console.WriteLine("]"); Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine(E); Console.ResetColor(); } CTests.End(); } }
public static void StringToInteger(INumericConverter aConverter) { /// /// Создание наборов данных. ///____________________________________________________________________________________ string Set0 = ""; string Set1 = "1,3..5,7,9"; string Set2 = "1..1000"; string Set3 = " 1 \t, 3..5, 7, 9"; string Set4 = "9..3"; string Set5 = "1, a, 4-9"; string Set6 = "1..213"; string Set7 = " 1 \t, 3..5,3..5, 7, 9"; var Sets = new Dictionary <string, string> () { { "Пустой набор", Set0 }, { "Тестовый набор № 1", Set6 }, { "Тестовый набор № 2", Set1 }, { "Полностью последовательный набор", Set2 }, { "Правильный набор с разрешенными пробелами", Set3 }, { "Ошибочный набор № 1", Set4 }, { "Ошибочный набор № 2", Set5 }, { "Ошибочный набор № 3 (дублирующиеся данные)", Set7 }, }; /// /// Обработка наборов. ///____________________________________________________________________________________ foreach (var S in Sets) { CTests.Begin(S.Key); CTests.IntroduceConverterMethod(aConverter, "string -> int[]"); Console.ForegroundColor = ConsoleColor.DarkGray; Console.WriteLine(String.Format ( "Set() = [{0}]", /* 0 */ S.Value )); Console.ResetColor(); Console.Write("Result(string -> int["); try { int[] Result = aConverter.Convert(S.Value, ",", ".."); Console.WriteLine(String.Format ( "{0}]) = [{1}]", /* 0 */ Result.Length, /* 1 */ String.Join(", ", Result) )); } catch (Exception E) { Console.Write("]) = ["); Console.ForegroundColor = ConsoleColor.DarkRed; Console.Write("Error"); Console.ResetColor(); Console.WriteLine("]"); Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine(E); Console.ResetColor(); } CTests.End(); } }