Menu
CoddyTech

Tạo bảng điểm

Thuộc phần Logic và luồng chương trình trong hành trình PHP của Coddy. Bài học 38 trên 68.

challenge icon

Thử thách

Dễ

Bạn sẽ nhận một đầu vào: một đối tượng JSON đại diện cho sổ điểm của học sinh. Sổ điểm dùng tên học sinh làm khóa, mỗi học sinh có "id" và một mảng (array) "grades" chứa điểm bài kiểm tra.

Đọc đầu vào, chuyển chuỗi JSON thành mảng sổ điểm, rồi tạo phiếu báo điểm có định dạng cho tất cả học sinh. Với mỗi học sinh, hãy hiển thị tên, mã số học sinh, từng điểm và điểm trung bình được làm tròn đến 2 chữ số thập phân.

Định dạng đầu ra chính xác như sau:

  • In ===== REPORT CARD ===== làm tiêu đề
  • Với mỗi học sinh, in:
    • Student: [name]
    • ID: [student_id]
    • Grades: [grade1], [grade2], [grade3], ... (tất cả điểm được ngăn cách bằng dấu phẩy và khoảng trắng)
    • Average: [average] (được làm tròn đến 2 chữ số thập phân)
    • Một dòng trống sau mỗi học sinh (ngoại trừ học sinh cuối cùng)

Định dạng đầu vào: Một dòng chứa đối tượng JSON đại diện cho sổ điểm (ví dụ: {"Alice":{"id":101,"grades":[85,92,78]},"Bob":{"id":102,"grades":[90,88,95]},"Charlie":{"id":103,"grades":[76,84,89]}})

Đầu ra mong đợi: Phiếu báo điểm có định dạng, hiển thị thông tin của từng học sinh gồm tên, mã số, tất cả điểm và điểm trung bình đã tính

Tự làm thử

<?php
// Đọc đầu vào JSON
$input = trim(fgets(STDIN));

// Chuyển JSON thành mảng
$gradebook = (array)json_decode($input, true);

// In ra tiêu đề
echo "===== REPORT CARD =====\n";

// TODO: Viết code của bạn bên dưới
// Lặp qua từng học sinh trong gradebook
// Với mỗi học sinh:
//   - In ra tên
//   - In ra ID
//   - In ra tất cả điểm số
//   - Tính và in ra điểm trung bình (làm tròn đến 2 chữ số thập phân)
//   - Thêm một dòng trống giữa các học sinh (trừ sau học sinh cuối cùng)

?>

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch PHP online