Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Thêm k sinh viên vào danh sách sinh viên

  1. #1
    Ngày gia nhập
    12 2010
    Bài viết
    32

    Angry Thêm k sinh viên vào danh sách sinh viên

    Các bạn coi dùm mình xem bài này sai ở đâu mà chương trình chỉ thêm được có 1 sinh viên chứ không thêm được k sinh viên ... Cám ơn nhìu nha..^^

    Code:
    class Sinhvien
        {
            string masv,hoten,lop;
            float diem1, diem2, diem3;
            public void nhap() // nhập masv, hoten, lop, diem1, diem2, diem3
            public void xuat() // xuất thông tin sinh viên
        }
    class Danhsachsinhvien
        {
            int ss;
            private Sinhvien[] dssv;
    
            public void nhap()
            {
                Console.Write("Nhap so sinh vien: ");
                ss = Int16.Parse(Console.ReadLine());
                dssv =new Sinhvien[ss];
                for (int i = 0; i < dssv.Length; i++)
                {
                    Console.WriteLine("Nhap sinh vien thu {0}: ", i+1);
                    dssv[i] = new Sinhvien();
                    dssv[i].nhap();
                }
            }
            public void xuat()
            {
                for (int i = 0; i < dssv.Length; i++)
                    dssv[i].xuat();
            }
            /*public void them1sinhvien()    // phần này chạy đúng
            {
                Array.Resize<Sinhvien>(ref dssv, dssv.Length + 1);
                dssv[dssv.Length - 1] = new Sinhvien();
                dssv[dssv.Length - 1].nhap();
    
            }*/
            public void themksinhvien()
            {
                int dem = 0;
                Console.Write("Nhap so sinh vien can them: ");
                int k = Int16.Parse(Console.ReadLine());
                while (dem < k)
                {
                    Array.Resize<Sinhvien>(ref dssv, dssv.Length + k);
                    dssv[dssv.Length - k] = new Sinhvien();
                    dssv[dssv.Length - k].nhap();
                    dem++;
                }
            }
        }
    }
    void main()
    {
               
                // Them k sinh vien
                Danhsachsinhvien ds = new Danhsachsinhvien();
                ds.nhap();
                ds.xuat();
                ds.themksinhvien(); 
                ds.xuat();
    }
    Đã được chỉnh sửa lần cuối bởi pnst_1811 : 25-10-2011 lúc 04:51 PM.

  2. #2
    Ngày gia nhập
    03 2010
    Bài viết
    236

    Code:
      public void themksinhvien()
        {
            int dem = 1;
            Console.Write("Nhap so sinh vien can them: ");
            int k = Int16.Parse(Console.ReadLine());
            Array.Resize<Sinhvien>(ref dssv, dssv.Length + k);//nếu để trong vòng lặp mỗi lần resize thêm k phần tử
            while (dem <= k)
            {
                
                dssv[dssv.Length-dem] = new Sinhvien();//Khởi tạo các phần tử tương ứng
                dssv[dssv.Length - dem].nhap();
                dem++;
            }
        }
    Mình có sửa code của bạn 2 chỗ:
    + Cho hàm resize ra ngoài vòng lặp
    + Khởi tạo đúng phần tử tương ứng trong mảng

    Lúc trước bạn thêm được có mỗi 1 sv là do bạn chỉ khởi tạo có một phần tử
    Code:
     dssv[dssv.Length - k] = new Sinhvien();

  3. #3
    Ngày gia nhập
    10 2011
    Bài viết
    3

    Bài này mình có làm rồi nè:

  4. #4
    Ngày gia nhập
    12 2010
    Bài viết
    32

    @ trungvx: bạn cho mình hỏi sao khi them vô nó lại bị đảo lại vậy?
    Vd: ban đầu nhập 2 sinh viên và xuất ra như sau:
    Code:
    masv        ho ten     diem 1   diem2  diem3  dtb    loai
    1              1             1         1          1       1      yeu
    2              2             2         2          2       2      yeu
    Sau đó thêm 3 sinh viên với masv theo thứ tự là 3 4 5 nhưng khi xuất ra màn hình là:
    Code:
    masv        ho ten     diem 1   diem2  diem3  dtb    loai
    1              1             1         1          1       1      yeu
    2              2             2         2          2       2      yeu
    5              5             5         5          5       5      tbinh
    4              4             4         4          4       4      yeu
    3              3             3         3          3       3      yeu
    Bạn cho mình hỏi muốn xuất ra theo thứ tự mã sinh viên 3 4 5 thì làm sao?

  5. #5
    Ngày gia nhập
    03 2010
    Bài viết
    236

    Trích dẫn Nguyên bản được gửi bởi pnst_1811 Xem bài viết
    @ trungvx: bạn cho mình hỏi sao khi them vô nó lại bị đảo lại vậy?
    Vd: ban đầu nhập 2 sinh viên và xuất ra như sau:
    Code:
    masv        ho ten     diem 1   diem2  diem3  dtb    loai
    1              1             1         1          1       1      yeu
    2              2             2         2          2       2      yeu
    Sau đó thêm 3 sinh viên với masv theo thứ tự là 3 4 5 nhưng khi xuất ra màn hình là:
    Code:
    masv        ho ten     diem 1   diem2  diem3  dtb    loai
    1              1             1         1          1       1      yeu
    2              2             2         2          2       2      yeu
    5              5             5         5          5       5      tbinh
    4              4             4         4          4       4      yeu
    3              3             3         3          3       3      yeu
    Bạn cho mình hỏi muốn xuất ra theo thứ tự mã sinh viên 3 4 5 thì làm sao?
    +Đảo ngược là do dssv[dssv.Length - dem].nhap(); bạn sẽ nhập thông tin cho sinh viên ở cuối mảng,rồi mới đến sinh viên tiếp theo (tính từ cuối).Nếu không muốn bạn có thể lưu kích thước của mảng trước khi thêm k sv rồi duyệt từ (dssv.length <dssv.length+k).

    +Hoặc dùng Interface ICompare để sắp xếp sinh viên theo mã.

  6. #6
    Ngày gia nhập
    12 2010
    Bài viết
    32

    Mặc định Thêm k sinh viên vào danh sách sinh viên

    Mình xin bổ sung 1 phần nhỏ sau trong void main():

    Code:
    void main()
    {
                // Nhap 1 sinh vien
                Sinhvien sv = new Sinhvien();
                sv.nhap();
                sv.xuat();
    
                // Them 1 sinh vien
                Danhsachsinhvien ds = new Danhsachsinhvien();
                ds.nhap();
                ds.them1sinhvien();
                sv.xuat();
                ds.xuat();
    }
    Các bạn sửa dùm mình phần thêm 1 sinh viên nha vì mình k hiểu tại sao khi nhập 1 sinh viên ban đầu, sau đó gọi hàm thêm 1 sinh viên thì chương trình lại xuất ra kết quả là 3 sinh viên

  7. #7
    Ngày gia nhập
    03 2010
    Bài viết
    236

    Trích dẫn Nguyên bản được gửi bởi pnst_1811 Xem bài viết
    Mình xin bổ sung 1 phần nhỏ sau trong void main():

    Code:
    void main()
    {
                // Nhap 1 sinh vien
                Sinhvien sv = new Sinhvien();
                sv.nhap();
                sv.xuat();
    
                // Them 1 sinh vien
                Danhsachsinhvien ds = new Danhsachsinhvien();
                ds.nhap();
                ds.them1sinhvien();
                sv.xuat();
                ds.xuat();
    }
    Các bạn sửa dùm mình phần thêm 1 sinh viên nha vì mình k hiểu tại sao khi nhập 1 sinh viên ban đầu, sau đó gọi hàm thêm 1 sinh viên thì chương trình lại xuất ra kết quả là 3 sinh viên
    Thêm 1 sinh viên và thêm k sinh viên là giống nhau.Mình nghĩ trong hàm main chỉ cần:

    Code:
                ds.nhap();
                ds.them1sinhvien();
                ds.xuat();

  8. #8
    Ngày gia nhập
    12 2010
    Bài viết
    32

    Mình thử rồi nó vẫn xuất ra kết quả là 3 sinh viên...Bạn code lại dùm mình bài này dc k?

  9. #9
    Ngày gia nhập
    03 2010
    Bài viết
    236

    Trích dẫn Nguyên bản được gửi bởi pnst_1811 Xem bài viết
    Mình thử rồi nó vẫn xuất ra kết quả là 3 sinh viên...Bạn code lại dùm mình bài này dc k?
    Bạn đưa code lên mọi người sẽ sửa cho bạn

Các đề tài tương tự

  1. Lập trình C++ Gặp lỗi lặp vô hạn khi xuất danh sách sinh viên trong code của bài danh sách sinh viên
    Gửi bởi boysieuda trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 16-05-2013, 04:57 PM
  2. Tạo danh sách sinh viên trên C++. Chỉnh sửa, xóa sinh viên thì làm thế nào?
    Gửi bởi hiepsiao trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 3
    Bài viết cuối: 28-08-2011, 10:26 AM
  3. Quản lí sinh viên bằng stack dùng danh sách liên kết. Làm sao để nhập nhiều sinh viên?
    Gửi bởi hoainamken trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 24-08-2011, 10:34 AM
  4. Bài tập quản lý sinh viên trong lập trình C#. Tìm kiếm sinh viên in ra cả danh sách?
    Gửi bởi anhduc12c5 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 24-08-2011, 08:32 AM
  5. Chương trình quản lí sinh viên viết trong visual c++ 2010. Lỗi không chạy khi in danh sách sinh viên theo năm
    Gửi bởi hikaru1015 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 9
    Bài viết cuối: 03-06-2011, 09:31 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn