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"; } }
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"; } }