Menu
Coddy logo textTech

Создание табеля успеваемости

Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 38 из 68.

challenge icon

Задание

Легко

Вы получите один входной параметр: объект JSON, представляющий классный журнал учащихся. В журнале имена учащихся используются в качестве ключей, при этом у каждого учащегося есть "id" и массив "grades", содержащий их оценки за тесты.

Прочитайте входные данные, преобразуйте строку JSON в массив классного журнала и создайте отформатированный табель успеваемости для всех учащихся. Для каждого учащегося выведите его имя, идентификатор учащегося, все индивидуальные оценки и их средний балл, округленный до 2 знаков после запятой.

Отформатируйте вывод точно следующим образом:

  • Выведите ===== REPORT CARD ===== в качестве заголовка
  • Для каждого учащегося выведите:
    • Student: [name]
    • ID: [student_id]
    • Grades: [grade1], [grade2], [grade3], ... (все оценки, разделенные запятыми и пробелами)
    • Average: [average] (округленный до 2 знаков после запятой)
    • Пустую строку после каждого учащегося (кроме последнего)

Формат входных данных: Одна строка, содержащая объект JSON, представляющий классный журнал (пример: {"Alice":{"id":101,"grades":[85,92,78]},"Bob":{"id":102,"grades":[90,88,95]},"Charlie":{"id":103,"grades":[76,84,89]}})

Ожидаемый результат: Отформатированный табель успеваемости, показывающий информацию о каждом учащемся с его именем, ID, всеми оценками и рассчитанным средним баллом

Попробуйте сами

<?php
// Прочитать входные данные JSON
$input = trim(fgets(STDIN));

// Преобразовать JSON в массив
$gradebook = (array)json_decode($input, true);

// Вывести заголовок
echo "===== REPORT CARD =====\n";

// TODO: Напишите свой код ниже
// Пройти циклом по каждому ученику в журнале успеваемости
// Для каждого ученика:
//   - Вывести его имя
//   - Вывести его ID
//   - Вывести все его оценки
//   - Рассчитать и вывести средний балл (округленный до 2 знаков после запятой)
//   - Добавить пустую строку между учениками (кроме последнего)

?>

Все уроки раздела Логика и управление потоком