Exemplo n.º 1
0
        // 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
        }
Exemplo n.º 2
0
        // 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);
                }
            }
        }