[Buổi 24][Lớp & đối tượng][HW] Bài 4: Lớp kết quả học phần nhiều thành phần
Lớp kết quả học phần nhiều thành phần
Bối cảnh
Mỗi CourseResult object giữ mã sinh viên và ba điểm process, midterm, final. Object tự cung cấp method total() theo trọng số 20%-30%-50% và grade() theo ngưỡng A≥8.5, B≥7, C≥5.5, D≥4, F còn lại. Cần xếp danh sách theo total giảm; tie ID tăng, rồi in id total grade.
Bài Medium chuyển từ class chỉ có một behavior sang object có nhiều behavior phụ thuộc cùng state. Main không được tự lặp lại công thức total/grade ở nhiều chỗ; comparator cũng nên gọi total() để giữ một nguồn logic duy nhất.
Mục tiêu quan trọng của bài là giữ công thức/behavior bên trong class thay vì để main tự tính lại ở nhiều nơi. Mỗi object phải có state riêng và method đọc đúng state đó. Khi behavior được gọi nhiều lần hoặc dùng trong ranking, một nguồn logic duy nhất giúp tránh hai công thức gần giống nhưng cho kết quả khác nhau.
Yêu cầu
- Tạo class CourseResult.
- Method total(), grade().
- Đọc n object.
- Sort total giảm, tie id tăng.
- In total 2 decimals và grade.
Input
Dòng 1 n; n dòng id process midterm final.
Output
n dòng.
Ràng buộc
1≤n≤5000, điểm 0..10.
Ví dụ 1
Input
4
S1 8 8 8
S2 10 5 9
S3 5 5 5
S0 8 8 8
Output
S0 8.00 B
S1 8.00 B
S2 8.00 B
S3 5.00 D
Giải thích
S1 và S0 đều total8.00 nên tie ID đưa S0 trước S1. S2 total 2+1.5+4.5=8.0 cũng bằng8, ID S0<S1<S2 nên ba record theo ID; S3 total5.00 đứng cuối và grade D/F theo ngưỡng: 5.00 là D.
Trường hợp mẫu cũng cho thấy kết quả được lấy thông qua behavior của object, không phải do main tự thay đổi field rồi tính tạm. Mỗi object giữ state độc lập, nên các phép tính ở object này không làm thay đổi object khác và output phản ánh đúng state đã nhập.
Ví dụ 2
Input
1
A 10 10 10
Output
A 10.00 A
Giải thích
A có ba điểm10 nên total10.00 và grade A. Chỉ một object nên output A 10.00 A.
Trường hợp mẫu cũng cho thấy kết quả được lấy thông qua behavior của object, không phải do main tự thay đổi field rồi tính tạm. Mỗi object giữ state độc lập, nên các phép tính ở object này không làm thay đổi object khác và output phản ánh đúng state đã nhập.
Thông tin học tập
- Module: M07
- Buổi: B24
- Loại bài: HOMEWORK
- Độ khó: Medium
- Concepts: class, methods, weighted score, ranking, vector, sorting
- Giới hạn kiến thức: B01-B24
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments