public List <Nhom> KhoiTaoNhom(int soNhom, List <Diem> dsDiem) { int soDiem = dsDiem.Count; Random r = new Random(); List <Nhom> dsNhom = new List <Nhom>(); for (int i = 0; i < soNhom; i++) { Nhom n = new Nhom(); n.Ma = i; n.Ten = "Nhóm thứ " + i.ToString(); Diem d = dsDiem[r.Next(soDiem - 1)]; n.X = d.X; n.Y = d.Y; dsNhom.Add(n); } return(dsNhom); }
/* Bài toán * INPUT: Tập các điểm và các số nhóm cần phân chia * OUPUT: Các điểm đã được phân chia hợp lý vào các nhóm * - CÁC BƯỚC THỰC HIỆN * B1: Lấy n điểm bất kỳ tương ứng với n nhóm cần phân chia tâm các nhóm * B2: Tính khoảng cách các điểm đến từng tâm nhóm nếu điểm đó gần tâm nhóm nào nhất thì nạp vào điểm đó vào nhóm đó * B3: Tính lại tâm của các nhóm * B4: Kiểm tra xem tâm các nhóm có thay đổi hay không, Nếu tâm nhóm thay đổi thì quay lại bước 2, nếu tâm nhóm k thay đổi thì kết thúc * */ public List <Diem> DocDuLieu(String duongDan) { String dl = File.ReadAllText(duongDan); List <Diem> ds = new List <Diem>(); if (dl.Length > 0 && dl.Contains("\r\n") && dl.Contains(",")) { foreach (string dong in dl.Split('\r')) { if (String.IsNullOrEmpty(dong.Trim())) { continue; } String tmp = dong.Replace("\n", "").Trim(); string hocSinh = tmp.Split('(')[0].Trim(); string diem = tmp.Split('(')[1].Trim().Replace(')', ' '); float diemToan = float.Parse(diem.Split(',')[0].Trim().Split(':')[1]); float diemVan = float.Parse(diem.Split(',')[1].Trim().Split(':')[1]); float diemAnh = float.Parse(diem.Split(',')[2].Trim().Split(':')[1]); float diemHoa = float.Parse(diem.Split(',')[3].Trim().Split(':')[1]); float diemLy = float.Parse(diem.Split(',')[4].Trim().Split(':')[1]); Diem d = new Diem(); d.HocSinh = hocSinh; d.DiemToan = diemToan; d.DiemVan = diemVan; d.DiemAnh = diemAnh; d.DiemHoa = diemHoa; d.DiemLy = diemLy; ds.Add(d); } return(ds); } else { return(null); } }