// Ham thuc hien tach chuoi du lieu user nhap vao // thanh cac thanh phan tuy kieu quan sat static bool TachDuLieu(MauNgauNhien.KieuQuanSat kieuQS, string qs, out double x, out double y, out int m) { x = 0.0; y = 0.0; m = 0; // tach chuoi ra theo cac ky tu khoang trong string[] giatris = qs.Split(); // phu thuoc vao kieu quan sat switch (kieuQS) { case MauNgauNhien.KieuQuanSat.ThongThuong: // kieu thong thuong chi can nhap 1 gia tri if (giatris.Length != 1) { return(false); // nhung lai nhap khac 1 gia tri, tra lai false } // su dung TryParse de chuyen doi kieu chuoi ve double, ket qua chuyen duoc tra ra bien tham chieu x // ham nay tra ra true neu chuyen doi duoc, false neu sai if (!double.TryParse(giatris[0], out x)) { return(false); } break; case MauNgauNhien.KieuQuanSat.ThuGon: // tuong tu tren if (giatris.Length != 2) { return(false); } if (!double.TryParse(giatris[0], out x)) { return(false); } if (!int.TryParse(giatris[1], out m)) { return(false); } break; case MauNgauNhien.KieuQuanSat.Khoang: // tuong tu tren if (giatris.Length != 3) { return(false); } if (!double.TryParse(giatris[0], out x)) { return(false); } if (!double.TryParse(giatris[1], out y)) { return(false); } if (!int.TryParse(giatris[2], out m)) { return(false); } break; } return(true); }
// Nhap du lieu voi so luong phan tu bat ky // hoac cho truoc hoac tu file // voi truong hop nhap gia tri voi so luong biet truoc thi num != 0 static void NhapDuLieu(int num = 0) { // Da co du lieu va nguoi su dung khong muon nhap du lieu moi // thi thoat khoi ham nay if (mau != null && !LaMuonNhapMoi()) { return; } // Nguoi su dung muon nhap moi // doc du lieu moi tu file Console.WriteLine("Ban muon nhap du lieu moi tu file ? (Yy/Nn) : "); string traloi = Console.ReadLine(); if (traloi == "Y" || traloi == "y") { NhapDuLieuTuFile(); } else // hoac thu cong { // Truoc tien, phai chon kieu quan sat MauNgauNhien.KieuQuanSat kieuQS = ChonKieuQuanSat(); // Tao moi MauNgauNhien mau = new MauNgauNhien(kieuQS); InHuongDanNhapLieu(num == 0); //bien dem dung de kiem soat trong truong hop nhap voi so luong da biet truoc int dem = 0; if (num != 0) { Console.WriteLine("Moi ban nhap {0} quan sat :", num); } else { Console.WriteLine("Moi ban bat dau nhap du lieu cac quan sat :"); } string quansat = NhapQuanSat(dem + 1); // Dieu kien 1 cho truong hop nhap voi so luong chua xac dinh // Dieu kien 2 cho truong hop nhap voi so luong da xac dinh // thay gop chung vao xu ly trong mot vong lap luon while ((quansat != null) || (dem != num)) { if (quansat == null) // nguoi su dung nhap CTRL+Z { if (num != 0) // ma dang nhap voi so luong xac dinh { Console.WriteLine("Ban nhap chua du so luong. Moi ban nhap tiep."); quansat = NhapQuanSat(dem + 1); // yeu cau nhap lai continue; } else { break; // nhap voi so luong chua xac dinh thi dung lai } } double x, y; int m; // tach chuoi du lieu nhap cua user ra cac thanh phan (phu thuoc vao kieu quan sat) if (!TachDuLieu(kieuQS, quansat, out x, out y, out m)) { // neu khong tach duoc InThongBaoLoiNhapLieu(); // in thong bao loi quansat = NhapQuanSat(dem + 1); // yeu cua nhap lai continue; } // neu tach duoc // phu thuoc kieu quan sat, them quan sat moi vao mau ngau nhien switch (kieuQS) { case MauNgauNhien.KieuQuanSat.ThongThuong: mau.AddQuanSat(x); break; case MauNgauNhien.KieuQuanSat.ThuGon: mau.AddQuanSat(x, m); break; case MauNgauNhien.KieuQuanSat.Khoang: mau.AddQuanSat(x, y, m); break; } dem++; // tang bien dem cho nhap da xac dinh so luong // khi so luong da xac dinh ma da nhap du so luong if (num != 0 && dem == num) { break; } // nhap quan sat tiep theo quansat = NhapQuanSat(dem + 1); } } }