Danh sách sinh viên (Đề 1)


Submit solution

Points: 3 (partial)
Time limit: 1.0s
Memory limit: 98M

Author:
Problem type
Allowed languages
C++

Mỗi sinh viên trong một khóa được coi là một đối tượng gồm những thuộc tính sau:

  • Họ và tên.
  • Mã học sinh (xâu gồm \(9\) kí tự số).

Điểm sinh viên là đối tượng con của sinh viên, có thêm một thuộc tính là điểm trung bình chung hệ \(4\).

Viết lớp sinh viên, điểm sinh viên (kế thừa từ lớp sinh viên), nhập các thông tin của sinh viên rồi thực hiện những yêu cầu dưới đây:

\(a)\) Tìm kiếm theo mã sinh viên và xác định học lực của sinh viên đó, biết học lực được xếp theo điểm hệ \(4\) như sau:

  • Từ \(3.6\) đến \(4.0\): Xuất sắc;
  • Từ \(3.2\) đến cận \(3.6\): Giỏi;
  • Từ \(2.5\) đến cận \(3.2\): Khá;
  • Từ \(2.0\) đến cận \(2.5\): Trung bình;
  • Từ \(1.0\) đến cận \(2.0\): Yếu;

\(b)\) In ra danh sách sinh viên tăng dần theo thứ tự chữ cái của họ và tên, hai người trùng họ tên thì so sánh theo mã sinh viên.

Đặc tả đầu vào

Dòng đầu tiên chứa \(2\) số nguyên \(a, b\) (chỉ nhận giá trị \(0\) hoặc \(1\)), với ý nghĩa số nào bằng \(0\) thì bỏ qua phần xuất kết quả ở câu tương ứng.

Dòng tiếp theo chứa số nguyên \(n\), số sinh viên.

\(3*n\) dòng tiếp theo, mỗi \(3\) dòng đặc tả các thông tin của một sinh viên như sau:

  • Dòng thứ nhất chứa mã sinh viên.
  • Dòng thứ hai chứa họ và tên sinh viên (chỉ gồm các chữ cái tiếng Anh, không có dấu cách ở đầu và cuối).
  • Dòng thứ ba ghi điểm sinh viên.

Dòng cuối cùng chứa mã sinh viên cần tìm kiếm.

Đặc tả đầu ra

Câu \(a\): Nếu tồn tại mã sinh viên, xuất ra các thông tin của sinh viên dưới dạng MaSinhVien - Ho Va Ten - Diem - HocLuc, học lực có thể là "Xuat sac", "Gioi", "Kha" "Trung binh", "Yeu". Nếu không tồn tại xuất ra "Khong tim thay sinh vien";

Câu \(b\): Xuất ra \(n\) dòng, mỗi dòng là thông tin của một sinh viên với định dạng như câu a.

Ghi chú: Máy chấm sẽ tự động bỏ qua những dòng trống và những dấu cách ở cuối dòng.

Chú ý: Để bỏ qua buffer '\n' trong C++, sử dụng cin.ignore(1e9, '\n'), không sử dụng fflush(stdin).

Tỉ lệ test

\(60\%\) số test có \(a = 1, b = 0\).

\(40\%\) số test có \(a = b = 1\).

\(n \le 1000\) trong mọi test.

Ví dụ

Đầu vào:

1 1
4
123456789
Lul Lul Lul
4
135901355
Uasjbd AAkks Dfn
2.5
301598350
Lfpfie Aijeb Add
3
929363656
Skjals Ajbjds Aa
3
123456789

Đầu ra:

123456789 - Lul Lul Lul - 4 - Xuat sac

301598350 - Lfpfie Aijeb Add - 3 - Kha
123456789 - Lul Lul Lul - 4 - Xuat sac
929363656 - Skjals Ajbjds Aa - 3 - Kha
135901355 - Uasjbd AAkks Dfn - 2.5 - Kha
QDUY

Comments


  • 0
    VănHoàng_CNTT2_K64  commented on Jan. 10, 2024, 3:18 p.m. edit 2

    Em sai đâu vậy ạ :<<< 12/20 Test


  • 0
    DucThach_CNTT2_K64  commented on Dec. 1, 2023, 3:13 p.m.

    bổ sung thêm ví dụ điểm < 1 được không a


    • 1
      Dung_CNTTVA2_K63  commented on Dec. 1, 2023, 4:43 p.m.

      e phải đảm bảo yêu cầu OOp lớp sinh viên, điểm sinh viên (kế thừa từ lớp sinh viên) là đc nhé dưới 1 in ra gì cũng không quan trọng


      • 0
        DucThach_CNTT2_K64  commented on Dec. 2, 2023, 8:33 a.m.

        mãi mới AC khổ thật, fix 1 hồi vẫn chưa biết mình sai ở đâu a ạ ._.


      • 0
        TranMinhDan_CNTTVA2_K63  commented on Dec. 2, 2023, 3:37 a.m.

        ý em ấy là đề bài ko có trường hợp gpa < 1 mà trong test lại có


        • 0
          Dung_CNTTVA2_K63  commented on Dec. 2, 2023, 4:15 a.m.

          bài này test cũng bịp thế nào ý t để < 1 ko in gì cũng AC mà hình như < 1 thì in "Yeu" là đc hay sao á


          • 0
            duck15  commented on Dec. 2, 2023, 4:24 a.m.

            Cho em hỏi bài của em sai ở đâu vậy ạ :<


            • 0
              Dung_CNTTVA2_K63  commented on Dec. 2, 2023, 6:09 a.m.

              e để điểm sinh viên (kế thừa từ lớp sinh viên) xem chứ lỗi này a cũng ko rõ


              • 0
                duck15  commented on Dec. 2, 2023, 6:37 a.m.

                dạ vâng ạ, nãy giờ e fix mãi ko biết sai chỗ nào :<


  • 1
    TranMinhDan_CNTTVA2_K63  commented on Nov. 26, 2023, 4:49 a.m.

    Ad sửa lại đề đi ạ em cout << "Khong tim thay sinh vien"; mới AC