【クラス・構造体メニュー】> FINAL問題【構造体の更新】構造体の更新 (paizaランク C 相当) [難易度: 1550 ±13]
※リンク先へ移動するためには[paiza]へのログインが必要です。
クラスの学級委員である paiza 君は、クラスのみんなに次のような形式でアカウントの情報を送ってもらうよう依頼しました。
名前 年齢 誕生日 出身地
送ってもらったデータを使いやすいように整理したいと思った paiza 君はクラス全員分のデータを次の形式でまとめることにしました。
User{
nickname : 名前
old : 年齢
birth : 誕生日
state : 出身地
}
途中で名前が変わった際にいちいちデータを修正するのが面倒だと思ったあなたは、生徒の構造体と新しい名前を受け取り、その名前を修正する関数 changeName
を作成し、それを用いて生徒の名前を更新することにしました。
クラスの人数と全員の情報、更新についての情報が与えられるので、入力に従って名前を更新した後のクラスのメンバーの情報を出力してください。
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<?php // Studentというクラス(型)を宣言。クラスの1文字目は大文字 class Student { // プロパティ public $name; public $old; public $birth; public $state; // メソッド function showData(){ } } //クラスStudentのインスタンスを作成 $deta = new Student; list($n, $k) = explode(" ", trim(fgets(STDIN))) ; for($i=0; $i<$n; $i++) { list($name, $old, $birth, $state) = explode(" ", trim(fgets(STDIN))); $student[] = array("name"=>$name, "old"=>$old, "birth"=>$birth, "state"=>$state); } for($i=0; $i<$k; $i++) { list($num, $change_name) = explode(" ", trim(fgets(STDIN))); $student[$num-1]["name"] = $change_name; } //print_r($student); for($i=0; $i<$n; $i++) { printf("%s %d %s %s\n", $student[$i]["name"], $student[$i]["old"], $student[$i]["birth"], $student[$i]["state"]); } ?> |