Ejemplo n.º 1
0
        private void add_b_Click(object sender, EventArgs e)
        {
            //данный метод вызывается когда происходит клик по кнопке "добавить"
            if (n_current == n)
            {
                //если текущая позиция в н массиве дошла до конца - ставим соответсвующий флаг и переходим к м массиву
                now_m = true;
            }

            double     x1, x2, x3, x4, y1, y2, y3, y4;
            quadrangle d;
            trapetion  t;

            try //сразу ловим все возможные ошибки
            {
                //считываем координаты из полей
                x1 = Convert.ToDouble(x1_f.Text);
                y1 = Convert.ToDouble(y1_f.Text);
                x2 = Convert.ToDouble(x2_f.Text);
                y2 = Convert.ToDouble(y2_f.Text);
                x3 = Convert.ToDouble(x3_f.Text);
                y3 = Convert.ToDouble(y3_f.Text);
                x4 = Convert.ToDouble(x4_f.Text);
                y4 = Convert.ToDouble(y4_f.Text);
                if (!now_m)
                {
                    //если время н массива
                    //создаем объект класса четырехугольник
                    d = new quadrangle(x1, y1, x2, y2, x3, y3, x4, y4);
                    if (!d.isExist())
                    {
                        //если с задаными координатами не существует четырех угольника
                        ///сообщение обо ошибке
                        ///и на второй круг
                        info_l.Text = "its insnt a quadrangale";
                        return;
                    }
                    ///если все ок
                    ///записываем этот объект в массив
                    ////и добавляем его в список записанных элементов
                    ///
                    qmas[n_current++] = d;
                    boxN.Items.Add(n_current + ": " + d.getCords());
                }
                else
                {
                    ///но если уже настало время м массива, то все тоже самое, но уже в м массив
                    ///
                    t = new trapetion(x1, y1, x2, y2, x3, y3, x4, y4);
                    if (!t.isExist())
                    {
                        info_l.Text = "its insnt a trapetion";
                        return;
                    }
                    tmas[m_current++] = t;
                    boxM.Items.Add(m_current + ": " + t.getCords());
                }
                info_l.Text = n_current + "/" + n + " quadrangale; " + m_current + "/" + m + " trapetion;"; //информация о процессе заполнения
                if (m_current + n_current == m + n)
                {
                    //как только заполним все
                    //выводим информацию мол все гуд, все хорошо
                    //и отключаем все кнопки которые были задействованы во избежании ошибок
                    info_l.Text   = "good";
                    x1_f.Enabled  = false;
                    y1_f.Enabled  = false;
                    x2_f.Enabled  = false;
                    y2_f.Enabled  = false;
                    x3_f.Enabled  = false;
                    y3_f.Enabled  = false;
                    x4_f.Enabled  = false;
                    y4_f.Enabled  = false;
                    add_b.Enabled = false;

                    if (n != 0)
                    {
                        //так же находим максимальную площадь четырехугольников и записываем ее
                        int ma = Program.findMaxArea(qmas);
                        stat1.Text = "max space is " + qmas[ma].area() + " in quadranel#" + (ma + 1);
                    }
                    if (m != 0)
                    {
                        //ну и минимальную диагональ
                        int mi = Program.findMinD(tmas);
                        stat2.Text = "min d is " + Math.Min(tmas[mi].side(5), tmas[mi].side(6)) + " in trapetion#" + (mi + 1);
                    }
                }

                //так же после каждой удачной записи увеличиваем заполнение прогресс бара
                progressBar1.Value++;
            }//конец блока с отлавливанием ошибок
            catch (Exception epa)
            {
                //если хоть одна была
                //например вместо цифр ввели буквы
                //или еще что-то
                //выводим информацию об ошибке
                info_l.Text = "Bad input, try again";
            }
        }
Ejemplo n.º 2
0
        private void load_b_Click(object sender, EventArgs e)
        {
            //тоже самое и для загрузки
            //только загружать можно и не до конца заполнив таблицу
            try
            {
                openFileDialog1.Filter = "bin files (*.bin)|*.bin|All files (*.*)|*.*";
                openFileDialog1.ShowDialog();
                Stream ins;
                ins = openFileDialog1.OpenFile();

                BinaryReader br = new BinaryReader(ins);
                n         = br.ReadInt32();
                m         = br.ReadInt32();
                n_current = n;
                m_current = m;
                qmas      = new quadrangle[n];
                tmas      = new trapetion[m];
                boxN.Items.Clear();
                boxM.Items.Clear();

                double x1, x2, x3, x4, y1, y2, y3, y4;
                for (int i = 0; i != n; i++)
                {
                    x1 = br.ReadDouble();
                    y1 = br.ReadDouble();

                    x2 = br.ReadDouble();
                    y2 = br.ReadDouble();

                    x3 = br.ReadDouble();
                    y3 = br.ReadDouble();

                    x4      = br.ReadDouble();
                    y4      = br.ReadDouble();
                    qmas[i] = new quadrangle(x1, y1, x2, y2, x3, y3, x4, y4);
                    boxN.Items.Add((i + 1) + ": " + qmas[i].getCords());
                }
                for (int i = 0; i != m; i++)
                {
                    x1 = br.ReadDouble();
                    y1 = br.ReadDouble();

                    x2 = br.ReadDouble();
                    y2 = br.ReadDouble();

                    x3 = br.ReadDouble();
                    y3 = br.ReadDouble();

                    x4      = br.ReadDouble();
                    y4      = br.ReadDouble();
                    tmas[i] = new trapetion(x1, y1, x2, y2, x3, y3, x4, y4);
                    boxM.Items.Add((i + 1) + ": " + tmas[i].getCords());
                }
                //после загрузки опять отключаем все кнопочки
                info_l.Text   = "good";
                x1_f.Enabled  = false;
                y1_f.Enabled  = false;
                x2_f.Enabled  = false;
                y2_f.Enabled  = false;
                x3_f.Enabled  = false;
                y3_f.Enabled  = false;
                x4_f.Enabled  = false;
                y4_f.Enabled  = false;
                add_b.Enabled = false;
                boxN.Enabled  = true;
                boxM.Enabled  = true;

                //а так же обновляем инфомацию о минимальной диагонали и макс площади
                if (n != 0)
                {
                    int ma = Program.findMaxArea(qmas);
                    stat1.Text = "max space is " + qmas[ma].area() + " in quadranel#" + (ma + 1);
                }
                if (m != 0)
                {
                    int mi = Program.findMinD(tmas);
                    stat2.Text = "min d is " + Math.Min(tmas[mi].side(5), tmas[mi].side(6)) + " in trapetion#" + (mi + 1);
                }
            }catch (Exception epa) //не забываем ловить ошибки
            {
                info_l.Text = "Some error in load";
            }
        }