private void buttonSkaiciuoti_Click(object sender, EventArgs e) { float x1; float.TryParse(inputX1.Text, out x1); float x2; float.TryParse(inputX2.Text, out x2); int k; int.TryParse(inputK.Text, out k); if (x1 < 0 || x2 < 0 || k < 0) { MessageBox.Show("Blogai suvesti duomenis"); } naujas = new Elementas("naujas", x1, x2, false); //lyginame naujai sukurta elementa su turimais, gautus atstumus saugome senuose elementuose foreach (Elementas el in elementai) { el.D1(naujas); el.D2(naujas); el.D3(naujas); } //Elementus surusiuojam (pagal skirtingus gautus atstumus), paimame k elemetu, List <Elementas> d1Elementai = elementai.OrderBy(t => t.d1).Take(k).ToList(); List <Elementas> d2Elementai = elementai.OrderBy(t => t.d2).Take(k).ToList(); List <Elementas> d3Elementai = elementai.OrderBy(t => t.d3).Take(k).ToList(); //skaiciuojam vidurkius gautu listu double averageD1 = d1Elementai.Average(t => t.posible ? 1 : 0); double averageD2 = d2Elementai.Average(t => t.posible ? 1 : 0); double averageD3 = d3Elementai.Average(t => t.posible ? 1 : 0); //gauname grupe pagal gauta vidurki int d1Grupe = GetGrupe(averageD1); int d2Grupe = GetGrupe(averageD2); int d3Grupe = GetGrupe(averageD3); string isvada = "Neaisku"; if ((d1Grupe + d2Grupe + d3Grupe) == 3) { isvada = "Teigiamas"; naujas.posible = true; elementai.Add(naujas); } else if ((d1Grupe + d2Grupe + d3Grupe) == 0) { isvada = "Neigiamas"; naujas.posible = false; elementai.Add(naujas); } rezultatas.Text = "pagal D1: " + GetGrupeString(d1Grupe) + " D2: " + GetGrupeString(d2Grupe) + " D3: " + GetGrupeString(d3Grupe) + ". Galutine išvada: " + isvada; panel1.Refresh(); }
// kai pakeičia duomeni arba atnaujiname arba pritedam nauja elementa i sarasa private void DataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e) { var ro = ((DataGridView)sender).Rows[e.RowIndex]; if (ro.Cells[0].Value != null && ro.Cells[1].Value != null && ro.Cells[2].Value != null && ro.Cells[3].Value != null) { if (ro.Cells[0].Value.ToString() != "" && ro.Cells[1].Value.ToString() != "" && ro.Cells[2].Value.ToString() != "" && ro.Cells[3].Value.ToString() != "") { if (elementai.Count > e.RowIndex) { elementai[e.RowIndex].name = ro.Cells[0].EditedFormattedValue.ToString(); elementai[e.RowIndex].x1 = float.Parse(ro.Cells[1].EditedFormattedValue.ToString()); elementai[e.RowIndex].x2 = float.Parse(ro.Cells[2].EditedFormattedValue.ToString()); elementai[e.RowIndex].posible = ro.Cells[3].EditedFormattedValue.ToString() == "+" ? true : false; } else { Elementas el = new Elementas(ro.Cells[0].Value.ToString(), float.Parse(ro.Cells[1].Value.ToString()), float.Parse(ro.Cells[2].Value.ToString()), ro.Cells[3].Value.ToString() == "+" ? true : false); elementai.Add(el); } } } }
//skaiciojame pagal antra formule public double D2(Elementas elementas2) { this.d2 = Math.Pow(this.x1 - elementas2.x1, 2) + Math.Pow(this.x2 - elementas2.x2, 2); return(this.d2); }
//skaiciojame pagal tracia formule public double D3(Elementas elementas2) { this.d3 = Math.Max(Math.Abs(this.x1 - elementas2.x1), Math.Abs(this.x2 - elementas2.x2)); return(this.d3); }
//skaiciojame pagal pirma formule public double D1(Elementas elementas2) { this.d1 = Math.Abs(this.x1 - elementas2.x1) + Math.Abs(this.x2 - elementas2.x2); return(this.d1); }