/* * Override operator * to get intersection of two sets */ public static UniqueIntegersSet operator *(UniqueIntegersSet uiSet1, UniqueIntegersSet uiSet2) { UniqueIntegersSet uiSetIntersection = new UniqueIntegersSet(); foreach (int item in uiSet2.setOfItems){ if (uiSet1.Contains(item)){ uiSetIntersection.AddItem(item); } } return uiSetIntersection; }
/* */ /* * Override operator + to combine two sets */ public static UniqueIntegersSet operator +(UniqueIntegersSet uiSet1, UniqueIntegersSet uiSet2) { UniqueIntegersSet uiSetUnion = new UniqueIntegersSet(); foreach (int item in uiSet1.setOfItems) { uiSetUnion.AddItem(item); } foreach (int item in uiSet2.setOfItems){ uiSetUnion.AddItem(item); } return uiSetUnion; }
public static void PrintMenu() { Console.WriteLine ("1. Объединение множеств"); Console.WriteLine ("2. Пересечение множеств"); Console.WriteLine ("3. Проверка принадлежности элемента множеству"); Console.WriteLine ("4. Создание объекта из массива"); Console.WriteLine ("5. Включение элемента (или массива) в множество"); Console.WriteLine ("6. Вывод множества на экран или в файл"); Console.WriteLine ("7. Выход"); Console.Write ("\nВведите [1-7]: "); int i; if (!int.TryParse (Console.ReadLine (), out i)) { ExitTestSystem (0); } Console.Clear(); UniqueIntegersSet uiset1 = new UniqueIntegersSet(RandomArray(10, 30)); UniqueIntegersSet uiset2 = new UniqueIntegersSet(RandomArray(10, 25)); switch (i) { case 1: Console.WriteLine("-- Объединение множеств --\n"); Console.WriteLine("Set1: {0}", uiset1); Console.WriteLine("Set2: {0}", uiset2); Console.WriteLine("\nОбъединение: {0}", uiset1 + uiset2); break; case 2: Console.WriteLine("-- Пересечение множеств --\n"); Console.WriteLine("Set1: {0}", uiset1); Console.WriteLine("Set2: {0}", uiset2); Console.WriteLine("\nОбъединение: {0}", uiset1 * uiset2); break; case 3: Console.WriteLine("-- Проверка принадлежности элемента множеству --\n"); while (true) { UniqueIntegersSet uiset = new UniqueIntegersSet (RandomArray(10, 40)); Console.WriteLine("Set: {0}", uiset); Console.Write("Введите элемент для проверки (Enter - закончить): "); string inputString = Console.ReadLine (); int item; if (inputString == "") { break; } if (!int.TryParse(inputString, out item)) { Console.WriteLine("Вы ввели шнягу"); } else { if (uiset.Contains(item)) { Console.WriteLine (">> True: {0} есть в Set.\n", item); } else { Console.WriteLine (">> False: {0} отсутствует в Set.\n", item); } } } break; case 4: Console.WriteLine ("-- Создание объекта из массива --\n"); int[] array = RandomArray (10, 40); Console.Write ("Array: <"); for (int j = 0; j < array.Length-1; ++j) { Console.Write ("{0}, ", array[j]); } Console.WriteLine ("{0}>", array[array.Length-1]); Console.WriteLine ("Set: {0}", new UniqueIntegersSet(array)); break; case 5: Console.WriteLine ("-- Включение элемента (или массива) в множество --\n"); UniqueIntegersSet uiset5 = new UniqueIntegersSet (); while (true) { Console.WriteLine ("Set: {0}\n", uiset5); Console.WriteLine ("Введите элемент ('10' или '1 2 4') для включения (Enter - закончить): "); string inputString = Console.ReadLine (); if (inputString == "") { break; } else { int[] splittedString = Array.ConvertAll<string, int>(inputString.Split(), int.Parse); uiset5.AddItem(splittedString); } } break; case 6: Console.WriteLine ("-- Вывод множества на экран или в файл --\n"); Console.WriteLine ("Set: {0}", uiset1); Console.WriteLine ("Введите путь файла для записи Set: "); string outFileName = Console.ReadLine (); using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"" + outFileName, false)) { file.WriteLine(uiset1); Console.WriteLine (">> Записано!"); } break; case 7: ExitTestSystem (0); break; default: Console.WriteLine("Вы ввели неверный код. Вернитесь назад и попробуйте еще раз ;)"); break; } }