Создание табеля успеваемости
Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 38 из 68.
Задание
ЛегкоВы получите один входной параметр: объект 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 знаков после запятой)
// - Добавить пустую строку между учениками (кроме последнего)
?>Все уроки раздела Логика и управление потоком
1Продвинутые функции
Анонимные функцииЗамыкания и 'use'Стрелочные функцииCallback-функцииИспользование 'call_user_func'Функции переменныхПередача по ссылкеРекурсивные функцииИтоги: ассорти из функций4Многомерные массивы
Создание 2D-массиваДоступ к элементам 2D-массиваИзменение элементов 2D-массиваИтерация с вложенными цикламиДвумерные ассоциативные массивыИтоги: Упражнение «Простая сетка»2Продвинутая работа с массивами
Добавление с помощью 'array_push'Удаление с помощью 'array_pop'Добавление с помощью 'array_unshift'Удаление с помощью 'array_shift'Слияние индексных массивовСлияние ассоциативных массивовИзвлечение с помощью 'array_slice'Поиск значений с 'in_array'Поиск ключей с 'array_search'Итоги: Упражнение «Плейлист»5Журнал успеваемости студентов
Настройка проекта: структура данныхДобавление нового студентаДобавление оценки студентуРасчет среднего балла студентаПоиск лучшего студентаСоздание табеля успеваемости3Сортировка массивов
Сортировка индексных массивов по возрастаниюСортировка индексных массивов по убываниюСортировка ассоциативных массивов по значениюСортировка ассоциативных массивов по ключуСортировка в естественном порядкеПользовательская сортировка с помощью 'usort'Итоги: Сортировка таблицы лидеров