// Doc du lieu mau tu file public static MauNgauNhien DocFile(string path) { // mo file ra de doc StreamReader reader = new StreamReader(path); if (reader == null) { return(null); // neu khong mo duoc thi tra ra null } // Đọc dòng đầu tiên để xử lý kiểu quan sát String input = reader.ReadLine(); MauNgauNhien.KieuQuanSat kieuqs; if (!Enum.TryParse(input, out kieuqs)) // kiem tra xem du lieu o dong dau co phu hop voi 3 dang quan sat { return(null); // neu khong, tra ra null } // tao mau ngau nhien moi MauNgauNhien mau = new MauNgauNhien(kieuqs); // Đọc dòng tiếp theo để biết số thành phần input = reader.ReadLine(); int k; if (!int.TryParse(input, out k)) { return(null); // neu dong tiep theo khong dung khuon dang thi cung tra ra null } // Đọc từng dòng, tùy vào kiểu quan sát mà tách các giá trị ra double x; double y; int m; for (int i = 0; i < k; i++) { input = reader.ReadLine(); switch (kieuqs) { case MauNgauNhien.KieuQuanSat.ThongThuong: if (!TachGiaTri(input, out x)) { return(null); // neu khong tach dung thi tra ra null } mau.AddQuanSat(x); // tach duoc thi them quan sat do vao mau break; case MauNgauNhien.KieuQuanSat.ThuGon: if (!TachGiaTri(input, out x, out m)) { return(null); } mau.AddQuanSat(x, m); break; case MauNgauNhien.KieuQuanSat.Khoang: if (!TachGiaTri(input, out x, out y, out m)) { return(null); } mau.AddQuanSat(x, y, m); break; } } reader.Close(); // dong file lai return(mau); // tra mau doc duoc ra }
// 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); } } }