//Создать коллекцию
        private void CreateDictionary()
        {
            _persons = new SortedDictionary <string, IPerson>(new ComparerForDictionary());
            int size;

            while (true)
            {
                size = Input("Введите размер коллекции: ");
                if (size == 0)
                {
                    Console.WriteLine("Введена пустая коллекция. Повторите ввод...");
                }
                else
                {
                    break;
                }
            }

            var array = CreateIPerson.CreateArray(size);

            foreach (var element in array)
            {
                _persons.Add(element.Return_SeName() + " " + element.Return_Name(), element);
            }
        }
Пример #2
0
        //Создать Stack
        private void CreateStack()
        {
            int size;

            while (true)
            {
                size = Input("Введите размер стэка: ");
                if (size <= 0)
                {
                    Console.WriteLine("Введена пустая/отрицательная последовательность! Повторите ввод...");
                }
                else
                {
                    break;
                }
            }

            _stack = new Stack <IPerson>(size);
            var array = CreateIPerson.CreateArray(size);

            for (var i = 0; i < size; i++)
            {
                _stack.Push(array[i]);
            }
        }
Пример #3
0
        //Создать очередь из заданной Capacity
        private void CreateFromCapacity()
        {
            _queue = new MyQueue <IPerson>(Input("Введите объем очереди: "));
            var array = CreateIPerson.CreateArray(_queue.Capacity * 2);

            foreach (var arrayElement in array)
            {
                _queue.Enqueue(arrayElement);
            }
        }
Пример #4
0
        //Создать очередь из фиксированной Capacity
        private void CreateFixCapacity()
        {
            _queue = new MyQueue <IPerson>();
            var array = CreateIPerson.CreateArray(_queue.Capacity * 2);

            foreach (var arrayElement in array)
            {
                _queue.Enqueue(arrayElement);
            }
        }
Пример #5
0
        //Создать очередь из готовой
        private void CreateFromReady()
        {
            var tmpQueue = new MyQueue <IPerson>();
            var add      = CreateIPerson.CreateArray(10);

            foreach (var addElement in add)
            {
                tmpQueue.Enqueue(addElement);
            }
            _queue = new MyQueue <IPerson>(tmpQueue);
        }
Пример #6
0
        private static void Main()
        {
            MyNewCollection myQueue_1 = new MyNewCollection("Первая коллекция");
            MyNewCollection myQueue_2 = new MyNewCollection("Вторая коллекция");

            Journal j_1        = new Journal("Изменение в первой коллекции");
            Journal jReference = new Journal("Изменение состояния в обеих коллекциях");

            myQueue_1.CollectionCountChanged     += new CollectionHandler(j_1.CollectionCountChanged);
            myQueue_1.CollectionReferenceChanged += new CollectionHandler(j_1.CollectionReferenceChanged);

            myQueue_1.CollectionReferenceChanged += new CollectionHandler(jReference.CollectionReferenceChanged);
            myQueue_2.CollectionReferenceChanged += new CollectionHandler(jReference.CollectionReferenceChanged);

            myQueue_1.Filling();
            myQueue_2.Filling();

            string[] menu =
            {
                "Добавить элемент в первую очередь.",                 "Добавить элемент во вторую очередь.",
                "Удалить элемент из первой очереди.",                 "Удалить элемент из второй очерели.",
                "Присвоить новые значение элементам первой очереди.", "Присвоить новые значения элементам второй очереди.",
                "Выход."
            };

            while (true)
            {
                var idMenu = ReadLib.Print.Menu(0, menu);
                switch (idMenu)
                {
                case 1: {
                    myQueue_1.AddDefault();
                    break;
                }

                case 2: {
                    myQueue_2.AddDefault();
                    break;
                }

                case 3: {
                    Console.Write("Введите индекс для удаления элемента из очереди: ");
                    int id = ReadLib.ReadLib.ReadVGran(0);
                    myQueue_1.Remove(id);
                    break;
                }

                case 4: {
                    Console.Write("Введите индекс для удаления элемента из очереди: ");
                    int id = ReadLib.ReadLib.ReadVGran(0);
                    myQueue_2.Remove(id);
                    break;
                }

                case 5:
                {
                    Console.Write("Введите индекс для изменения элемента из очереди: ");
                    int id = ReadLib.ReadLib.ReadVGran(0);
                    myQueue_1[id] = CreateIPerson.CreateElement <Student>();
                    break;
                }

                case 6:
                {
                    Console.Write("Введите индекс для изменения элемента из очереди: ");
                    int id = ReadLib.ReadLib.ReadVGran(0);
                    myQueue_2[id] = CreateIPerson.CreateElement <Associate>();
                    break;
                }

                case 7: {
                    return;
                }
                }
            }
        }
Пример #7
0
        //Запросы
        private void Queries <T>()
        {
            string[] queriesMenu = { "Кол-во объектов.", "Печать объектов.", "Перегенерировать объекты", "Назад." };
            while (true)
            {
                var sw = Print.Menu(0, queriesMenu);
                switch (sw)
                {
                case 1:
                    var count = 0;
                    foreach (var person in _stack)
                    {
                        try {
                            count++;
                        }
                        catch {
                            // ignored
                        }
                    }

                    Console.WriteLine(
                        "Кол-во объектов выбранного типа = {0}.\n\n\nДля продолженния нажать на любую клавишу...",
                        count);
                    Console.ReadKey(true);
                    break;

                case 2:
                    Console.WriteLine("Объекты выбранного типа: ");
                    foreach (var person in _stack)
                    {
                        try {
                            var element = (T)person;
                            CreateIPerson.Show(element);
                        }
                        catch {
                            // ignored
                        }
                    }

                    Console.WriteLine("\n\n\nДля продолженния нажать на любую клавишу...");
                    Console.ReadKey(true);
                    break;

                case 3:
                    count = 0;
                    var array = _stack.ToArray();
                    foreach (var person in _stack)
                    {
                        try {
                            var element = (T)person;
                            RemoveFromArray(ref array, (IPerson)element);
                            count++;
                        }
                        catch {
                            // ignored
                        }
                    }

                    CreateStack(array);
                    for (var i = 0; i < count; i++)
                    {
                        _stack.Push(CreateIPerson.CreateElement <T>());
                    }
                    Console.WriteLine(
                        "Объекты выбранного типы были перезаписаны.\n\n\nДля продолженния нажать на любую клавишу...");
                    Console.ReadKey(true);
                    break;

                case 4:
                    return;
                }
            }
        }
        //Запросы
        private void Queries <T>()
        {
            string[] queriesMenu = { "Кол-во объектов.", "Печать объектов.", "Перегенерировать объекты", "Назад." };
            while (true)
            {
                var sw = Print.Menu(0, queriesMenu);
                switch (sw)
                {
                case 1:
                    var count = 0;
                    foreach (var key in _persons.Keys)
                    {
                        try {
                            count++;
                        }
                        catch {
                            // ignored
                        }
                    }

                    Console.WriteLine(
                        "Кол-во объектов выбранного типа = {0}.\n\n\nДля продолженния нажать на любую клавишу...",
                        count);
                    Console.ReadKey(true);
                    break;

                case 2:
                    Console.WriteLine("Объекты выбранного типа: ");
                    foreach (var key in _persons.Keys)
                    {
                        try {
                            var element = (T)_persons[key];
                            CreateIPerson.Show(element);
                        }
                        catch {
                            // ignored
                        }
                    }

                    Console.WriteLine("\n\n\nДля продолженния нажать на любую клавишу...");
                    Console.ReadKey(true);
                    break;

                case 3:
                    count = 0;
                    var tmp = new SortedDictionary <string, IPerson>(ClonaDictionary());
                    foreach (var key in tmp.Keys)
                    {
                        try {
                            _persons.Remove(key);
                            count++;
                        }
                        catch {
                            // ignored
                        }
                    }

                    for (var i = 0; i < count; i++)
                    {
                        var add = CreateIPerson.CreateElement <T>();
                        _persons.Add(add.Return_SeName() + " " + add.Return_Name(), add);
                    }

                    Console.WriteLine(
                        "Объекты выбранного типы были перезаписаны.\n\n\nДля продолженния нажать на любую клавишу...");
                    Console.ReadKey(true);
                    break;

                case 4:
                    return;
                }
            }
        }
Пример #9
0
        public void Start()
        {
            string[] mainMenu =
            {
                "Создать очередь.",         "Проверка св-в коллекции.", "Проверка метода Contains.",
                "Проверка метода Clear.",
                "Проверка метода Dequeue.", "Проверка метода Enqueue.", "Проверка метода Peek.",
                "Проверка метода ToArray.",
                "Проверка метода Clone.",   "Проверка метода CopyTo.",  "Выход."
            };
            var k = 9;

            while (true)
            {
                var sw = Print.Menu(k, mainMenu);
                switch (sw)
                {
                case 1:
                    k = Create();
                    break;

                case 2:
                    CurrentQueue();
                    Console.WriteLine("\nОбъем коллекции: {0}", _queue.Capacity);
                    Console.WriteLine("\nКол-во элементов в последовательности: {0}", _queue.Count);
                    Continue();
                    break;

                case 3:
                    CurrentQueue();
                    IPerson person1 = new Student("Адам", "Арсанукаев", 1, 10);
                    var     person2 = _queue.Peek();
                    Console.WriteLine(
                        "\nЧеловек " + person1.Return_SeName() + " " + person1.Return_Name() +
                        " содержиться ли в очереди?\n{0}", _queue.Contains(person1));
                    Console.WriteLine(
                        "\nЧеловек " + person2.Return_SeName() + " " + person2.Return_Name() +
                        " содержиться ли в очереди?\n{0}", _queue.Contains(person2));
                    Continue();
                    break;

                case 4:
                    CurrentQueue();
                    _queue.Clear();
                    Console.WriteLine("Очередь очищена...");
                    k = 0;
                    Continue();
                    break;

                case 5:
                    CurrentQueue();
                    var person = _queue.Dequeue();
                    Console.WriteLine("\nВывели человека: ");
                    person.Show();
                    Console.WriteLine("\nОчередь после изменения: ");
                    CurrentQueue();
                    Continue();
                    break;

                case 6:
                    CurrentQueue();
                    var add = CreateIPerson.CreateElement <Associate>();
                    Console.WriteLine("\nДобавим в конец списка: ");
                    add.Show();
                    _queue.Enqueue(add);
                    Console.WriteLine("\nОчередь после изменения: ");
                    CurrentQueue();
                    Continue();
                    break;

                case 7:
                    CurrentQueue();
                    person = _queue.Peek();
                    Console.WriteLine("\nВывели человека: ");
                    person.Show();
                    Console.WriteLine("\nОчередь не изменена: ");
                    CurrentQueue();
                    Continue();
                    break;

                case 8:
                    CurrentQueue();
                    var array = _queue.ToArray();
                    Console.WriteLine("Вывод массива: ");
                    Output(array);
                    Continue();
                    break;

                case 9:
                    CurrentQueue();
                    var clone = new MyQueue <IPerson>(_queue);
                    Console.WriteLine("Вывод копии: ");
                    var cloneMyQueueWork = new MyQueueWork(clone);
                    cloneMyQueueWork.Output();
                    break;

                case 10:
                    CurrentQueue();
                    _queue.CopyTo(out array, _queue.Count / 2);
                    Console.WriteLine("Вывод массива: ");
                    Output(array);
                    Continue();
                    break;

                case 11:
                    return;
                }
            }
        }