概要

このトピックの最後は 総合演習。お題は典型的な「学生 × 教科の成績データ」で、標準入力から「1 件 = 名前 + 複数の数値」の形式を読み取り、2 次元配列やオブジェクトリストに組み立て、行ごとの平均 (各学生の平均) と列ごとの平均 (教科ごとのクラス平均) を使い分ける ことを目的にする。ここまで (ch01〜ch11) で扱った断片的な技術が、1 つのプログラムとして繋がる経験になる。

ドリル 01 (学生別平均) では 行ごとの集計 が問われる。array_sum($scores) / count($scores) のように 1 件のレコードに対して平均を出すパターンで、ch06 (行合計) の発展形。ドリル 02 (教科別クラス平均) では 列ごとの集計 が問われ、ch07 (列合計) の発想を平均に拡張する。同じデータを「縦に見るか / 横に見るか」で答えが変わる、というデータ集計の核心がここで腹落ちする。

実務でも「売上を月別に見たいのか / 商品別に見たいのか」「ユーザー別の合計か / 日別の合計か」のように 集計軸の切り替え は常に出てくる。この章でその発想を一度通すと、後で BI ツールやデータ集計スクリプトを書く時の発想の元になる。標準入力 → パース → 2 次元配列 → 集計 → 出力 という流れを自分の手で一気通貫に書けるようになるのがゴール。

学習目標

ドリル

no 内容
01 学生 3 人の 3 教科点数を読み、各学生の平均を出力
02 学生 3 人の 3 教科点数を読み、教科ごとのクラス平均を出力

演習: ドリル 01 — 各学生の平均点を出力

問題

標準入力で 3 行のデータが与えられます。各行は次の形式です。

名前,国語の点,数学の点,英語の点

入力例:

太郎,80,70,90
花子,60,90,90
次郎,100,100,70

各学生について、3 教科の 平均点 を計算し、次の形で 1 行ずつ出力してください。

名前: 平均

期待される出力:

太郎: 80
花子: 80
次郎: 90

ヒント

演習: ドリル 02 — 教科ごとのクラス平均を出力

問題

標準入力で 3 行のデータが与えられます。各行は次の形式です。

名前,国語の点,数学の点,英語の点

入力例:

太郎,60,80,100
花子,90,80,70
次郎,90,80,100

各教科のクラス平均 (3 人の平均) を計算し、国語 → 数学 → 英語 の順に 1 行ずつ出力してください。

期待される出力:

80
80
90

ヒント

この章を AI に聞く

  1. 「ch12 — 多次元配列の総合演習」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch12 — 多次元配列の総合演習」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch12 — 多次元配列の総合演習」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch12 — 多次元配列の総合演習」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE