示例#1
0
        static void Main(string[] args)
        {
            Console.WriteLine("1. Задание 1\n2. Задание 2\n3. Задание 3\n0. Выйти");
            int input_0;

            while (!int.TryParse(Console.ReadLine(), out input_0) || (input_0 < 0 && input_0 > 3))
            {
                Console.WriteLine("Повторите ввод.");
            }

            //Коллекция 1
            List <Challenge> testObj = new List <Challenge>()
            {
                new Test("Иван", "Математика", "Производные", 13, 18),
                new Test("Дмитрий", "Дискретная математика", "Графы", 25, 18),
                new Exam("Алексей", "Программирование", 30, 1),
            };

            //Коллекция 2
            SortedDictionary <int, Challenge> objects = new SortedDictionary <int, Challenge>()
            {
                { 1, new Test("Иван", "Математика", "Производные", 13, 18) },
                { 2, new Test("Алексей", "Дискретная математика", "Графы", 25, 18) },
                { 3, new Exam("Алексей", "Программирование", 30, 1) }
            };

            while (input_0 != 0)
            {
                int input;
                switch (input_0)
                {
                case 0:
                    return;

                case 1:
                    //Задание 1
                    Console.WriteLine("-----------------\n\n" +
                                      "1. Вывод элементов\n" +
                                      "2. Добавить элементы\n" +
                                      "3. Удалить элементы\n" +
                                      "4. Количество элементов\n" +
                                      "5. Вывод элементов определенного типа\n" +
                                      "6. Удаление элементов определенного типа\n" +
                                      "7. Сортировка коллекции и поиск элемента\n" +
                                      "8. Клонирование коллекции\n" +
                                      "0. Выйти");
                    while (!int.TryParse(Console.ReadLine(), out input) || (input < 0 && input > 8))
                    {
                        Console.WriteLine("Повторите ввод.");
                    }
                    switch (input)
                    {
                    case 0:
                        return;

                    case 1:
                        Print(testObj);
                        break;

                    case 2:
                        AddEl(ref testObj);
                        break;

                    case 3:
                        RemoveEl(ref testObj);
                        break;

                    case 4:
                        CountSpecEl(testObj);
                        break;

                    case 5:
                        PrintSpecEl(testObj);
                        break;

                    case 6:
                        RemoveSpecEl(ref testObj);
                        break;

                    case 7:
                        testObj.Sort();
                        Console.WriteLine("Коллекция успешно отсортирована.");
                        Test forSearch = new Test("Сергей", "Дискретная математика", "Графы", 25, 18);
                        int  search;
                        search = testObj.BinarySearch(forSearch);
                        if (search >= 0)
                        {
                            Console.WriteLine($"Объект {forSearch} найден");
                        }
                        else
                        {
                            Console.WriteLine($"Объект {forSearch} не найден");
                        }
                        break;

                    case 8:
                        List <Challenge> list = new List <Challenge>();
                        foreach (Challenge el in testObj)
                        {
                            list.Add(el);
                        }
                        Console.Clear();
                        Console.WriteLine("Клон коллекции:");
                        Print(list);
                        break;
                    }
                    break;

                case 2:
                    //Задание 2
                    Console.WriteLine("-----------------\n\n" +
                                      "1. Вывод элементов\n" +
                                      "2. Добавить элементы\n" +
                                      "3. Удалить элементы\n" +
                                      "4. Количество элементов\n" +
                                      "5. Вывод элементов определенного типа\n" +
                                      "6. Удаление элементов определенного типа\n" +
                                      "7. Сортировка коллекции и поиск элемента\n" +
                                      "8. Клонирование коллекции\n" +
                                      "0. Выйти");
                    while (!int.TryParse(Console.ReadLine(), out input) || (input < 0 && input > 8))
                    {
                        Console.WriteLine("Повторите ввод.");
                    }
                    switch (input)
                    {
                    case 0:
                        return;

                    case 1:
                        Print(objects);
                        break;

                    case 2:
                        AddEl(ref objects);
                        break;

                    case 3:
                        RemoveEl(ref objects);
                        break;

                    case 4:
                        CountSpecEl(objects);
                        break;

                    case 5:
                        PrintSpecEl(objects);
                        break;

                    case 6:
                        RemoveSpecEl(ref objects);
                        break;

                    case 7:

                        Test forSearch = new Test("Алексей", "Дискретная математика", "Графы", 25, 18);
                        if (objects.Values.Contains(forSearch))
                        {
                            Console.WriteLine($"Объект {forSearch} найден");
                        }
                        else
                        {
                            Console.WriteLine($"Объект {forSearch} не найден");
                        }

                        break;

                    case 8:
                        SortedDictionary <int, Challenge> list = new SortedDictionary <int, Challenge>();
                        foreach (int keyValue in objects.Keys)
                        {
                            list.Add(keyValue, objects[keyValue]);
                        }
                        Console.Clear();
                        Console.WriteLine("Клон коллекции:");
                        Print(list);
                        break;
                    }
                    break;

                case 3:
                    //Задание 3

                    TestCollections tst = new TestCollections(150);

                    Test first  = null;
                    Test middle = null;
                    Test last   = null;

                    for (int i = 0; i < tst.Size; i++)
                    {
                        if (i == 0)
                        {
                            first = (Test)tst.listStudents[i].Clone();
                        }
                        else if (i == tst.Size / 2)
                        {
                            middle = (Test)tst.listStudents[i].Clone();
                        }
                        else if (i == tst.Size - 1)
                        {
                            last = (Test)tst.listStudents[i].Clone();
                        }
                    }


                    tst.PrintList();
                    tst.PrintDict();


                    Stopwatch stopWatch = new Stopwatch();

                    Console.WriteLine("Поиск в списке:");

                    if (tst.listStudents.Contains(first))
                    {
                        Console.WriteLine($"Элемент {first} найден");

                        stopWatch.Restart();
                        tst.listStudents.Contains(first);
                        stopWatch.Stop();
                        long testList = stopWatch.Elapsed.Ticks;

                        stopWatch.Restart();
                        tst.stringList.Contains(first.ToString());
                        stopWatch.Stop();
                        long testLString = stopWatch.Elapsed.Ticks;

                        stopWatch.Restart();
                        tst.dictStudents.ContainsValue(first);
                        stopWatch.Stop();
                        long testDict = stopWatch.Elapsed.Ticks;

                        stopWatch.Restart();
                        tst.stringDict.ContainsValue(first);
                        stopWatch.Stop();
                        long testDString = stopWatch.Elapsed.Ticks;

                        Console.WriteLine($"Поиск первого элемента в List: {testList} \n" +
                                          $"поиск первого элемента в SortedDict: {testDict} \n" +
                                          $"поиск первого элемента в List<str>: {testLString} \n" +
                                          $"поиск первого элемента в SortedDict<str, Test>: {testDString}");
                        Console.WriteLine("----------------------------------------------");
                    }
                    else
                    {
                        Console.WriteLine($"Элемент {first} не найден");
                    }

                    if (tst.listStudents.Contains(middle))
                    {
                        Console.WriteLine($"Элемент {middle} найден");
                        stopWatch.Restart();
                        tst.listStudents.Contains(middle);
                        stopWatch.Stop();
                        long testList = stopWatch.Elapsed.Ticks;

                        stopWatch.Restart();
                        tst.stringList.Contains(middle.ToString());
                        stopWatch.Stop();
                        long testLString = stopWatch.Elapsed.Ticks;

                        stopWatch.Restart();
                        tst.dictStudents.ContainsValue(middle);
                        stopWatch.Stop();
                        long testDict = stopWatch.Elapsed.Ticks;

                        stopWatch.Restart();
                        tst.stringDict.ContainsValue(middle);
                        stopWatch.Stop();
                        long testDString = stopWatch.Elapsed.Ticks;

                        Console.WriteLine($"Поиск первого элемента в List: {testList} \n" +
                                          $"поиск первого элемента в SortedDict: {testDict} \n" +
                                          $"поиск первого элемента в List<str>: {testLString} \n" +
                                          $"поиск первого элемента в SortedDict<str, Test>: {testDString}");
                        Console.WriteLine("----------------------------------------------");
                    }
                    else
                    {
                        Console.WriteLine($"Элемент {middle} не найден");
                    }

                    if (tst.listStudents.Contains(last))
                    {
                        Console.WriteLine($"Элемент {last} найден");
                        stopWatch.Restart();
                        tst.listStudents.Contains(last);
                        stopWatch.Stop();
                        long testList = stopWatch.Elapsed.Ticks;

                        stopWatch.Restart();
                        tst.stringList.Contains(last.ToString());
                        stopWatch.Stop();
                        long testLString = stopWatch.Elapsed.Ticks;

                        stopWatch.Restart();
                        tst.dictStudents.ContainsValue(last);
                        stopWatch.Stop();
                        long testDict = stopWatch.Elapsed.Ticks;

                        stopWatch.Restart();
                        tst.stringDict.ContainsValue(last);
                        stopWatch.Stop();
                        long testDString = stopWatch.Elapsed.Ticks;

                        Console.WriteLine($"Поиск первого элемента в List: {testList} \n" +
                                          $"поиск первого элемента в SortedDict: {testDict} \n" +
                                          $"поиск первого элемента в List<str>: {testLString} \n" +
                                          $"поиск первого элемента в SortedDict<str, Test>: {testDString}");
                        Console.WriteLine("----------------------------------------------");
                    }
                    else
                    {
                        Console.WriteLine($"Элемент {last} не найден");
                    }

                    Test nothing = new Test("a", "b", "c", 2, 1);

                    if (!tst.listStudents.Contains(nothing))
                    {
                        Console.WriteLine($"Элемент {nothing} не найден");
                        stopWatch.Restart();
                        tst.listStudents.Contains(nothing);
                        stopWatch.Stop();
                        long testList = stopWatch.Elapsed.Ticks;

                        stopWatch.Restart();
                        tst.stringList.Contains(nothing.ToString());
                        stopWatch.Stop();
                        long testLString = stopWatch.Elapsed.Ticks;

                        stopWatch.Restart();
                        tst.dictStudents.ContainsValue(nothing);
                        stopWatch.Stop();
                        long testDict = stopWatch.Elapsed.Ticks;

                        stopWatch.Restart();
                        tst.stringDict.ContainsValue(nothing);
                        stopWatch.Stop();
                        long testDString = stopWatch.Elapsed.Ticks;

                        Console.WriteLine($"Поиск первого элемента в List: {testList} \n" +
                                          $"поиск первого элемента в SortedDict: {testDict} \n" +
                                          $"поиск первого элемента в List<str>: {testLString} \n" +
                                          $"поиск первого элемента в SortedDict<str, Test>: {testDString}");
                        Console.WriteLine("----------------------------------------------");
                    }

                    Console.WriteLine("Поиск в словаре:");

                    if (tst.dictStudents.Values.Contains(first))
                    {
                        Console.WriteLine($"Элемент {first} найден");
                    }
                    else
                    {
                        Console.WriteLine($"Элемент {first} не найден");
                    }
                    if (tst.dictStudents.Values.Contains(middle))
                    {
                        Console.WriteLine($"Элемент {middle} найден");
                    }
                    else
                    {
                        Console.WriteLine($"Элемент {middle} не найден");
                    }
                    if (tst.dictStudents.Values.Contains(last))
                    {
                        Console.WriteLine($"Элемент {last} найден");
                    }
                    else
                    {
                        Console.WriteLine($"Элемент {last} не найден");
                    }

                    input_0 = -1;
                    break;
                }
            }
            Console.ReadLine();
        }