コード例 #1
0
        private void Addbtn_Click(object sender, EventArgs e)
        {
            Statelabel.Text = "";
            if (checktype(First_textbox.Text, Second_textbox.Text) == 0)
            {
                Statelabel.Text = "Оба поля пусты. Добавлять нечего";
            }
            if (checktype(First_textbox.Text, Second_textbox.Text) == 1)
            { //только один аргумент
                Statelabel.Text += String.Format("Добавленные элементы:\n");
                Lall element = Parse(First_textbox.Text);
                container_.Add(element);
                ElementsCombo.Items.Add(string.Format("{0}", element.Get()));
            }
            if (checktype(First_textbox.Text, Second_textbox.Text) == 2)
            { //два аргумента
                Lelement first, second;

                Statelabel.Text += String.Format("Добавленные элементы:\n");
                first            = Parse(First_textbox.Text);
                second           = Parse(Second_textbox.Text);

                Lall element = new Lstruct2(first, second);
                container_.Add(element);
                ElementsCombo.Items.Add(string.Format("{0}, {1}", element.Get(0), element.Get(1)));
            }
        }
コード例 #2
0
        private void restorebtn_Click(object sender, EventArgs e)
        {
            string path = "data.txt";

            string[] a;
            try
            {
                StreamReader file = new StreamReader(path);
                container_.Clear();
                while (!file.EndOfStream)
                { //читаем до конца файла
                    a = file.ReadLine().Split('\t');
                    if (a.Count() == 1)
                    { //табов нет
                        Lall element = Parse(a[0]);
                        container_.Add(element);
                        ElementsCombo.Items.Add(string.Format("{0}", element.Get()));
                    }
                    else
                    {
                        if (a.Count() == 2)
                        { //опа, табы
                            Lelement first, second;

                            first  = Parse(a[0]);
                            second = Parse(a[1]);

                            Lall element = new Lstruct2(first, second);
                            container_.Add(element);
                            ElementsCombo.Items.Add(string.Format("{0}, {1}", element.Get(0), element.Get(1)));
                        }
                        else //кто-то ручками влез в файл
                        {
                            throw new Exception("corruption");
                        }
                    }
                }
                Statelabel.Text = "Список успешно восстановлен";
                file.Close();
            }
            //что-то пошло не так, не паникуем
            catch (System.IO.FileNotFoundException)
            {
                Statelabel.Text = "Файл не найден";
            }
            catch (System.IO.IOException)
            {
                Statelabel.Text = "Ошибка ввода/вывода";
            }
            catch (Exception)
            {
            }
        }
コード例 #3
0
        private void ascbtn_Click(object sender, EventArgs e)
        {
            int      swaps = 0;
            int      Nelements = container_.Count();
            Lstruct2 cmp_first, cmp_second;

            do
            {
                swaps = 0;
                for (int i = 0; i < Nelements; i++)
                {
                    if (container_.ElementAt(i).Get_Count() == 1)
                    { //не структура
                        cmp_first = new Lstruct2((Lelement)container_.ElementAt(i), new Lstring());
                    }
                    else
                    { //это и так структура, так что кастуем и присваиваем
                        cmp_first = (Lstruct2)container_.ElementAt(i);
                    }
                    for (int j = i + 1; j < Nelements; j++)
                    {
                        if (container_.ElementAt(j).Get_Count() == 1)
                        { //не структура
                            cmp_second = new Lstruct2((Lelement)container_.ElementAt(j), new Lstring());
                        }
                        else
                        { //это и так структура, так что кастуем и присваиваем
                            cmp_second = (Lstruct2)container_.ElementAt(j);
                        }
                        //а теперь сравнение
                        if (cmp_first > cmp_second)
                        {
                            container_.Insert(i, container_.ElementAt(j));
                            ElementsCombo.Items.Insert(i, ElementsCombo.Items[j]);
                            container_.RemoveAt(j + 1);
                            ElementsCombo.Items.RemoveAt(j + 1);
                            swaps++;
                        }
                    }
                }
            } while (swaps != 0);
            Statelabel.Text = "Контейнер отсортирован по возрастанию";
        }
コード例 #4
0
        private void deldblbtn_Click(object sender, EventArgs e)
        {
            int      dels = 0;
            int      Nelements = container_.Count();
            Lstruct2 cmp_first, cmp_second;

            do
            {
                dels = 0;
                for (int i = 0; i < Nelements; i++)
                {
                    if (container_.ElementAt(i).Get_Count() == 1)
                    { //не структура
                        cmp_first = new Lstruct2((Lelement)container_.ElementAt(i), new Lstring());
                    }
                    else
                    { //это и так структура, так что кастуем и присваиваем
                        cmp_first = (Lstruct2)container_.ElementAt(i);
                    }
                    for (int j = i + 1; j < Nelements; j++)
                    {
                        if (container_.ElementAt(j).Get_Count() == 1)
                        { //не структура
                            cmp_second = new Lstruct2((Lelement)container_.ElementAt(j), new Lstring());
                        }
                        else
                        { //это и так структура, так что кастуем и присваиваем
                            cmp_second = (Lstruct2)container_.ElementAt(j);
                        }
                        //а теперь сравнение
                        if (cmp_first == cmp_second)
                        {
                            container_.RemoveAt(j);
                            ElementsCombo.Items.RemoveAt(j);
                            Nelements--;
                            dels++;
                        }
                    }
                }
            } while (dels != 0);
        }
コード例 #5
0
        private void Searchbtn_Click(object sender, EventArgs e)
        {
            int count = 0;

            Statelabel.Text = "";
            if (checktype(First_textbox.Text, Second_textbox.Text) == 0)
            {
                Statelabel.Text = "Оба поля пусты. Искать нечего";
            }
            if (checktype(First_textbox.Text, Second_textbox.Text) == 1)
            { //проверяем поиск: один аргумент
                Statelabel.Text += String.Format("Цель поиска:\n");
                Lelement search = Parse(First_textbox.Text);
                foreach (Lall element in container_)
                {
                    if (element.Get_Count() == 1 && search == (Lelement)element)
                    {
                        count++;
                    }
                }
                Statelabel.Text += String.Format("Объектов найдено: {0}", count);
            }
            if (checktype(First_textbox.Text, Second_textbox.Text) == 2)
            { //проверяем поиск: два аргумента
                Lelement first, second;

                Statelabel.Text += String.Format("Цель поиска:\n");
                first            = Parse(First_textbox.Text);
                second           = Parse(Second_textbox.Text);

                Lstruct2 search = new Lstruct2(first, second);
                foreach (Lall element in container_)
                {
                    if (element.Get_Count() == 2 && search == (Lstruct2)element)
                    {
                        count++;
                    }
                }
                Statelabel.Text += String.Format("Объектов найдено: {0}", count);
            }
        }