<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>クラス・構造体メニュー - IQパズルステップ</title>
	<atom:link href="https://chokomon.com/category/paiza/26-class_primer/feed/" rel="self" type="application/rss+xml" />
	<link>https://chokomon.com</link>
	<description>ちょこっと頭を良くするIQパズル問題集</description>
	<lastBuildDate>Wed, 19 Oct 2022 12:49:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://chokomon.com/wp-content/uploads/2022/02/cropped-icon512-32x32.png</url>
	<title>クラス・構造体メニュー - IQパズルステップ</title>
	<link>https://chokomon.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【クラス・構造体メニュー】静的メンバ (paizaランク B)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-02-06-00673/</link>
					<comments>https://chokomon.com/26-class_primer-02-06-00673/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Wed, 19 Oct 2022 12:49:50 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクB]]></category>
		<category><![CDATA[難易度-1800]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=7031</guid>

					<description><![CDATA[【クラス・構造体メニュー】> FINAL問題【静的メンバ】静的メンバ (paizaランク B 相当) [難易度: 1813 ±19] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】> <a rel="noreferrer noopener" href="https://paiza.jp/works/mondai/class_primer/class_primer__static_member" target="_blank">FINAL問題【静的メンバ】静的メンバ (paizaランク B 相当)</a> [難易度: <strong>1813 ±19</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img fetchpriority="high" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/10/26-02-06-01.png" alt="" class="wp-image-7033"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>居酒屋で働きながらクラスの勉強をしていたあなたは、お客さんをクラスに見立てることで勤務時間中の店内の人数や注文の情報を管理できることに気付きました。<br>全てのお客さんは、ソフトドリンクと食事を頼むことができます。加えて 20 歳以上のお客さんはお酒を頼むことができます。<br>20 歳未満のお客さんがお酒を頼もうとした場合はその注文は取り消されます。<br>また、お酒（ビールを含む）を頼んだ場合、以降の全ての食事の注文 が毎回 200 円引きになります。</p>



<p>今回、この居酒屋でビールフェスをやることになり、ビールの注文が相次いだため、いちいちビールの値段である 500 円を書くのをやめ、注文の種類と値段を書く代わりに 0 とだけを書くことになりました。</p>



<p>勤務時間の初めに店内にいるお客さんの人数と与えられる入力の回数、各注文をしたお客さんの番号とその内容、または退店したお客さんの番号が与えられます。<br>お客さんが退店する場合はそのお客さんの会計を出力してください。勤務時間中に退店した全てのお客さんの会計を出力したのち、勤務時間中に退店した客の人数を出力してください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>2 3<br>20<br>30<br>1 0<br>2 0<br>1 A</p>



<p><strong>出力値（例）</strong><br>500<br>1</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    class Customer {
        public $payment = 0;
        private static $counter = 0;
        
        public function __construct($payment) {
            $this-&gt;payment = $payment = 0;
        }
        
        public static function GetNumberOfVisitors() {
            return Customer::$counter;
        }
    
        public function GetPayment() {
            Customer::$counter++;
            return $this-&gt;payment;
        }
    
        public function OrderFood($price) {
            $this-&gt;payment += $price;
        }
    
        public function OrderSoftDrink($price) {
            $this-&gt;payment += $price;
        }
    
        public function OrderAlcohol($price = 500) {
            // echo "お酒は20歳になってから";
        }
    }
    
    class AdultCustomer extends Customer {
        public $discount;
        
        public function __construct($discount) {
            $this-&gt;discount = $discount = false;
        }
    
        public function OrderFood($price) {
            $this-&gt;payment += $this-&gt;discount ? $price - 200 : $price;
        }
    
        public function OrderAlcohol($price = 500) {
            $this-&gt;payment += $price;
            if (!$this-&gt;discount) {
                $this-&gt;discount = true;
            }
        }
    }
    
    list($n, $k) = explode(" ", trim(fgets(STDIN)));
    for($i=0; $i&lt;$n; $i++) {
        $age = trim(fgets(STDIN));
        
        if($age&lt;20) {
            $customers[] = new Customer($age);
        } else {
            $customers[] = new AdultCustomer($age);
        }
    }
    
    for($i=0; $i&lt;$k; $i++) {
        $input = explode(" ", trim(fgets(STDIN)));
        
        $index = $input[0];
        $index--;
        
        $order = $input[1];
        
        if($order == "A") {
            echo $customers[$index]-&gt;GetPayment(). "\n";
        } elseif($order == 0) {
            $order = "beer";
        } else {
            $price = $input[2];
        }
        
        switch($order) {
            case "food":
                $customers[$index]-&gt;OrderFood($price);
                break;
            case "softdrink":
                $customers[$index]-&gt;OrderSoftDrink($price);
                break;
            case "alcohol":
                $customers[$index]-&gt;OrderAlcohol($price);
                break;
            case "beer":
                $customers[$index]-&gt;OrderAlcohol();
                break;
        }
    }
    //print_r($customers);
    
    echo Customer::GetNumberOfVisitors(). "\n";
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="660" height="200" src="https://chokomon.com/wp-content/uploads/2022/10/26-02-06-02.png" alt="" class="wp-image-7034"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-02-06-00673/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クラス・構造体メニュー】デフォルト引数 (paizaランク B)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-02-05-00672/</link>
					<comments>https://chokomon.com/26-class_primer-02-05-00672/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Tue, 18 Oct 2022 10:45:53 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクB]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=7026</guid>

					<description><![CDATA[【クラス・構造体メニュー】> 【静的メンバ】STEP: 5 デフォルト引数 (paizaランク B 相当) [難易度: 1590 ±19] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】> <a href="https://paiza.jp/works/mondai/class_primer/class_primer__set_default" target="_blank" rel="noreferrer noopener">【静的メンバ】STEP: 5 デフォルト引数 (paizaランク B 相当)</a> [難易度: <strong>1590 ±19</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/10/26-02-05-01.png" alt="" class="wp-image-7027"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>居酒屋で働きながらクラスの勉強をしていたあなたは、お客さんをクラスに見立てることで店内の情報を管理できることに気付きました。<br>全てのお客さんは、ソフトドリンクと食事を頼むことができます。加えて 20 歳以上のお客さんはお酒を頼むことができます。<br>20 歳未満のお客さんがお酒を頼もうとした場合はその注文は取り消されます。<br>また、お酒（ビールを含む）を頼んだ場合、以降の全ての食事の注文 が毎回 200 円引きになります。</p>



<p>今回、この居酒屋でビールフェスをやることになり、ビールの注文が相次いだため、いちいちビールの値段である 500 円を書くのをやめ、伝票に注文の種類と値段を書く代わりに 0 とだけを書くことになりました。</p>



<p>店内の全てのお客さんの数と注文の回数、各注文をしたお客さんの番号とその内容が与えられるので、各お客さんの会計を求めてください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>3 5<br>19<br>43<br>22<br>2 0<br>2 food 4333<br>1 0<br>2 0<br>1 food 4606</p>



<p><strong>出力値（例）</strong><br>4606<br>5133<br>0</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    class Customer {
        public $payment = 0;
        
        public function __construct($payment) {
            $this-&gt;payment = $payment = 0;
        }
    
        public function GetPayment() {
            return $this-&gt;payment;
        }
    
        public function OrderFood($price) {
            $this-&gt;payment += $price;
        }
    
        public function OrderSoftDrink($price) {
            $this-&gt;payment += $price;
        }
    
        public function OrderAlcohol($price = 500) {
            // echo "お酒は20歳になってから";
        }
    }
    
    class AdultCustomer extends Customer {
        public $discount;
        
        public function __construct($discount) {
            $this-&gt;discount = $discount = false;
        }
    
        public function OrderFood($price) {
            $this-&gt;payment += $this-&gt;discount ? $price - 200 : $price;
        }
    
        public function OrderAlcohol($price = 500) {
            $this-&gt;payment += $price;
            if (!$this-&gt;discount) {
                $this-&gt;discount = true;
            }
        }
    }
    
    list($n, $k) = explode(" ", trim(fgets(STDIN)));
    for($i=0; $i&lt;$n; $i++) {
        $age = trim(fgets(STDIN));
        
        if($age&lt;20) {
            $customers[] = new Customer($age);
        } else {
            $customers[] = new AdultCustomer($age);
        }
    }
    for($i=0; $i&lt;$k; $i++) {
        $m = explode(" ", trim(fgets(STDIN)));
        
        $index = $m[0];
        $index--;
        
        if($m[1] == 0) {
            $order = "beer";
        } else {
            $order = $m[1];
            $price = $m[2];
        }
    
        switch($order) {
            case "food":
                $customers[$index]-&gt;OrderFood($price);
                break;
            case "softdrink":
                $customers[$index]-&gt;OrderSoftDrink($price);
                break;
            case "alcohol":
                $customers[$index]-&gt;OrderAlcohol($price);
                break;
            case "beer":
                $customers[$index]-&gt;OrderAlcohol();
                break;
        }
    }
    //print_r($customers);
    
    for($i=0; $i&lt;$n; $i++) {
        echo $customers[$i]-&gt;GetPayment(). "\n";
    }
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="200" src="https://chokomon.com/wp-content/uploads/2022/10/26-02-05-02.png" alt="" class="wp-image-7028"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-02-05-00672/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クラス・構造体メニュー】クラスの継承 (paizaランク B)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-02-04-00665/</link>
					<comments>https://chokomon.com/26-class_primer-02-04-00665/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Mon, 10 Oct 2022 03:30:30 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクB]]></category>
		<category><![CDATA[難易度-1900]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6983</guid>

					<description><![CDATA[【クラス・構造体メニュー】&#62; 【静的メンバ】STEP: 4 クラスの継承 (paizaランク B 相当)&#160;[難易度:&#160;1934&#160;±23] ※リンク先へ移動するためには[paiza]へのログインが必要です。…]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】&gt; <a href="https://paiza.jp/works/mondai/class_primer/class_primer__inheritance" target="_blank" rel="noreferrer noopener">【静的メンバ】STEP: 4 クラスの継承 (paizaランク B 相当)</a>&nbsp;[難易度:&nbsp;<strong>1934&nbsp;±23</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/10/26-02-04-01.png" alt="" class="wp-image-6984"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>paiza 国の大衆居酒屋で働きながらクラスの勉強をしていたあなたは、お客さんをクラスに見立てることで店内の情報を管理できることに気付きました。<br>全てのお客さんは、ソフトドリンクと食事を頼むことができます。<br>paiza 国の法律では、 20 歳以上のお客さんは成人とみなされ、お酒を頼むことができます。<br>20 歳未満のお客さんは未成年とみなされ、お酒を頼もうとした場合はその注文は取り消されます。<br>また、お酒を頼んだ場合、以降の全ての食事の注文 が毎回 200 円引きになります.</p>



<p>店内の全てのお客さんの数と注文の回数、各注文をしたお客さんの番号とその内容が与えられるので、各お客さんの会計を求めてください。</p>



<p>ヒント</p>



<p>注文について、20 歳未満のお客さんにできて、 20 歳以上のお客さんにできないことはないので、20歳未満のお客さんのクラスを作成して、それを継承して 20歳以上のお客さんのクラスを作成することで効率よく実装することができます。</p>



<p></p>



<p><strong>入力値（例）</strong><br>2 5<br>59<br>5<br>2 food 1223<br>1 alcohol 4461<br>1 alcohol 4573<br>1 alcohol 1438<br>2 softdrink 1581</p>



<p><strong>出力値（例）</strong><br>10472<br>2804</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    class Customer {
        public $payment = 0;
        
        public function __construct($payment) {
            $this-&gt;payment = $payment = 0;
        }
    
        public function GetPayment() {
            return $this-&gt;payment;
        }
    
        public function OrderFood($price) {
            $this-&gt;payment += $price;
        }
    
        public function OrderSoftDrink($price) {
            $this-&gt;payment += $price;
        }
    
        public function OrderAlcohol($price) {
            // echo "お酒は20歳になってから";
        }
    }
    
    class AdultCustomer extends Customer {
        public $discount;
        
        public function __construct($discount) {
            $this-&gt;discount = $discount = false;
        }
    
        public function OrderFood($price) {
            $this-&gt;payment += $this-&gt;discount ? $price - 200 : $price;
        }
    
        public function OrderAlcohol($price) {
            $this-&gt;payment += $price;
            if (!$this-&gt;discount) {
                $this-&gt;discount = true;
            }
        }
    }

　　list($n, $k) = explode(" ", trim(fgets(STDIN)));
    for($i=0; $i&lt;$n; $i++) {
        $age = trim(fgets(STDIN));
        
        if($age&lt;20) {
            $customers[] = new Customer($age);
        } else {
            $customers[] = new AdultCustomer($age);
        }
    }
    for($i=0; $i&lt;$k; $i++) {
        list($index, $order, $price) = explode(" ", trim(fgets(STDIN)));
        
        $index--;
    
        switch($order) {
            case "food":
                $customers[$index]-&gt;OrderFood($price);
                break;
            case "softdrink":
                $customers[$index]-&gt;OrderSoftDrink($price);
                break;
            case "alcohol":
                $customers[$index]-&gt;OrderAlcohol($price);
                break;
        }
    }
    //print_r($customers);
    
    for($i=0; $i&lt;$n; $i++) {
        echo $customers[$i]-&gt;GetPayment(). "\n";
    }
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="200" src="https://chokomon.com/wp-content/uploads/2022/10/26-02-04-02.png" alt="" class="wp-image-6985"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-02-04-00665/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クラス・構造体メニュー】クラスのメンバの更新 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-02-03-00664/</link>
					<comments>https://chokomon.com/26-class_primer-02-03-00664/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Fri, 30 Sep 2022 14:06:53 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6975</guid>

					<description><![CDATA[【クラス・構造体メニュー】> 【静的メンバ】STEP: 3 クラスのメンバの更新 (paizaランク C 相当) [難易度: 1524 ±18] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】> <a href="https://paiza.jp/works/mondai/class_primer/class_primer__change_member" target="_blank" rel="noreferrer noopener">【静的メンバ】STEP: 3 クラスのメンバの更新 (paizaランク C 相当)</a> [難易度: <strong>1524 ±18</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/26-02-03-01.png" alt="" class="wp-image-6976"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>エンジニアであり、社員を管理を管理する立場にあるあなたの会社には、効率的に社員を管理するために、次のようなメンバ変数とメンバ関数を持つ社員クラス<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"> <code>class employee</code> </mark>が存在しています。<br><br>メンバ変数<br><code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">整数 number, 文字列 name</mark></code><br><br>メンバ関数</p>



<p class="has-gray-background-color has-background">getnum(){<br>    return number;<br>}<br>getname(){<br>    return name;<br>}</p>



<p>しかし、この社員クラスについて、社員番号や名前が変わった際にいちいち手動で更新するのは面倒だと感じたあなたは、引数に元の社員番号と新しい社員番号を指定すれば、新しい社員番号に更新してくれる関数<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"> <code>change_num</code> </mark>と　引数に元の名前と新しい名前を指定すれば、新しい名前に更新してくれる関数 <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"><code>change_name</code> </mark>を作成することにしました。</p>



<p>入力で<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"> <code>make number name</code> </mark>と入力された場合は変数に<code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">number, name</mark></code>を持つ社員を作成し、<code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">getnum n</mark></code>と入力された場合は n 番目に作成された社員の number を、<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"><code>getname n</code> </mark>と入力された場合は n 番目に作成された社員の name を出力してください。</p>



<p>また、<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"> <code>change_num n newnum</code> </mark>と入力された場合は、n 番目に作成された社員の number を、 newnum に変更し、<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"> <code>change_name n newname</code> </mark>と入力された場合は、n 番目に作成された社員の name を、 newname に変更してください。</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    //Classを定義
    class employee {
        //プロパティを定義
        private $number;
        private $name;
        
        //インスタンス化するときに引数を受け取れるようにする
        public function __construct($number, $name) {
            $this-&gt;number = $number;
            $this-&gt;name = $name;
        }
        //数字を取得するメソッドを追加
        public function getnum() {
            return $this-&gt;number;
        }
        public function getname() {
            return $this-&gt;name;
        }
        public function change_num($newnum) {
            $this-&gt;number = $newnum;
        }
        public function change_name($newname) {
            $this-&gt;name = $newname;
        }
    }
    
    $n = trim(fgets(STDIN));
    for($i=0; $i&lt;$n; $i++) {
        $s = explode(" ", trim(fgets(STDIN)));
        
        $commond = $s[0];
        $num = $s[1];
        
        switch($commond) {
            case "make" :
                $name = $s[2];
                $employee[] = new employee($num, $name);
                break;
            case "getnum" :
                echo ($employee[$num-1]-&gt;getnum()). "\n";
                break;
            case "getname" :
                echo ($employee[$num-1]-&gt;getname()). "\n";
                break;
            case "change_num" :
                $newnum = $s[2];
                echo ($employee[$num-1]-&gt;change_num($newnum));
                break;
            case "change_name" :
                $newname = $s[2];
                echo ($employee[$num-1]-&gt;change_name($newname));
                break;
        }
    }
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="200" src="https://chokomon.com/wp-content/uploads/2022/09/26-02-03-02.png" alt="" class="wp-image-6979"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-02-03-00664/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クラス・構造体メニュー】コンストラクタ (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-02-02-00663/</link>
					<comments>https://chokomon.com/26-class_primer-02-02-00663/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Wed, 28 Sep 2022 13:52:44 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1400]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6965</guid>

					<description><![CDATA[【クラス・構造体メニュー】&#62; 【静的メンバ】STEP: 2 コンストラクタ (paizaランク C 相当)&#160;[難易度:&#160;1445&#160;±17] ※リンク先へ移動するためには[paiza]へのログインが必要です…]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】&gt; <a href="https://paiza.jp/works/mondai/class_primer/class_primer__constructor" target="_blank" rel="noreferrer noopener">【静的メンバ】STEP: 2 コンストラクタ (paizaランク C 相当)</a>&nbsp;[難易度:&nbsp;<strong>1445&nbsp;±17</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/26-02-02-01.png" alt="" class="wp-image-6966"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>エンジニアのあなたの会社には、既に次のような社員クラス class employee が存在しています。<br><br>メンバ変数<br><code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">整数 number, 文字列 name</mark></code><br><br>メンバ関数</p>



<p class="has-gray-background-color has-background">getnumber(){<br>    return number;<br>}<br>getname(){<br>    return name;<br>}</p>



<p>現状、この社員クラスの全てのメンバ変数・メンバ関数を設定するためには、<code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">インスタンス名.変数名 </mark></code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color"><code>= 変数</code>&nbsp;</mark>といった具合に直接代入をしなくてはなりません。<br>それは面倒なので、コンストラクタという機能を用いて、インスタンスを作成する際に<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">&nbsp;<code>インスタンス名 = new クラス名(number,name)</code>&nbsp;</mark>とすることでメンバ変数を設定できるように書き換えましょう。</p>



<p>入力で<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">&nbsp;<code>make number name</code></mark>&nbsp;と入力された場合は各変数に number , name を持つ社員を作成し、<code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">getnum n</mark></code>と入力された場合は n 番目に作成された社員の number を、<code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">getname n</mark></code>&nbsp;と入力された場合は n 番目に作成された社員の name を出力してください。</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    //Classを定義
    class employee {
        //プロパティを定義
        private $number;
        private $name;
        
        //インスタンス化するときに引数を受け取れるようにする
        public function __construct($number, $name) {
            $this-&gt;number = $number;
            $this-&gt;name = $name;
        }
        //数字を取得するメソッドを追加
        public function getnum() {
            return $this-&gt;number;
        }
        public function getname() {
            return $this-&gt;name;
        }
    }
    
    $n = trim(fgets(STDIN));
    for($i=0; $i&lt;$n; $i++) {
        $s = explode(" ", trim(fgets(STDIN)));
        
        $commond = $s[0];
        $num = $s[1];
        
        switch($commond) {
            case "make" :
                $name = $s[2];
                $employee[] = new employee($num, $name);
                break;
            case "getnum" :
                echo ($employee[$num-1]-&gt;getnum()). "\n";
                break;
            case "getname" :
                echo ($employee[$num-1]-&gt;getname()). "\n";
                break;
        }
    }
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="200" src="https://chokomon.com/wp-content/uploads/2022/09/26-02-02-02.png" alt="" class="wp-image-6969"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-02-02-00663/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クラス・構造体メニュー】クラスの作成 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-02-01-00662/</link>
					<comments>https://chokomon.com/26-class_primer-02-01-00662/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Tue, 27 Sep 2022 13:32:15 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1600]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6959</guid>

					<description><![CDATA[【クラス・構造体メニュー】&#62; 【静的メンバ】STEP: 1 クラスの作成 (paizaランク C 相当)&#160;[難易度:&#160;1606&#160;±15] ※リンク先へ移動するためには[paiza]へのログインが必要です。…]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】&gt; <a href="https://paiza.jp/works/mondai/class_primer/class_primer__make_class" target="_blank" rel="noreferrer noopener">【静的メンバ】STEP: 1 クラスの作成 (paizaランク C 相当)</a>&nbsp;[難易度:&nbsp;<strong>1606&nbsp;±15</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/26-02-01-01.png" alt="" class="wp-image-6960"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>エンジニアであり、社員を管理を管理する立場にあるあなたは、効率的に社員を管理するために、<br>各社員の社員番号 number と名前 name を持ち、加えて情報を返す関数を持つような構造体、すなわち次のようなメンバ変数とメンバ関数を持つ社員クラス<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">&nbsp;<code>class employee</code>&nbsp;</mark>を作成することにしました。<br><br>メンバ変数</p>



<p class="has-gray-background-color has-background">number : 整数<br>name : 文字列</p>



<p>メンバ関数</p>



<p class="has-gray-background-color has-background">getnum(){<br>    return number;<br>}<br>getname(){<br>    return name;<br>}</p>



<p>入力で<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">&nbsp;<code>make number name</code>&nbsp;</mark>と入力された場合は変数に number , name を持つ社員を作成し、<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">&nbsp;<code>getnum n</code></mark>&nbsp;と入力された場合は n 番目に作成された社員の number を、<code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-light-orange-color">getname n</mark></code>&nbsp;と入力された場合は n 番目に作成された社員の name を出力してください。</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    //Classを定義
    class employee {
        //プロパティを定義
        private $number;
        private $name;
        
        //インスタンス化するときに引数を受け取れるようにする
        public function __construct($number, $name) {
            $this-&gt;number = $number;
            $this-&gt;name = $name;
        }
        //数字を取得するメソッドを追加
        public function getnum() {
            return $this-&gt;number;
        }
        public function getname() {
            return $this-&gt;name;
        }
    }
    
    $n = trim(fgets(STDIN));
    for($i=0; $i&lt;$n; $i++) {
        $s = explode(" ", trim(fgets(STDIN)));
        
        $commond = $s[0];
        $num = $s[1];
        
        switch($commond) {
            case "make" :
                $name = $s[2];
                $employee[] = new employee($num, $name);
                break;
            case "getnum" :
                echo ($employee[$num-1]-&gt;getnum()). "\n";
                break;
            case "getname" :
                echo ($employee[$num-1]-&gt;getname()). "\n";
                break;
        }
    }
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="200" src="https://chokomon.com/wp-content/uploads/2022/09/26-02-01-02.png" alt="" class="wp-image-6962"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-02-01-00662/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クラス・構造体メニュー】構造体の更新 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-01-04-00659/</link>
					<comments>https://chokomon.com/26-class_primer-01-04-00659/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Fri, 23 Sep 2022 08:47:08 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6941</guid>

					<description><![CDATA[【クラス・構造体メニュー】> FINAL問題【構造体の更新】構造体の更新 (paizaランク C 相当) [難易度: 1550 ±13] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】> <a href="https://paiza.jp/works/mondai/class_primer/class_primer__change" target="_blank" rel="noreferrer noopener">FINAL問題【構造体の更新】構造体の更新 (paizaランク C 相当)</a> [難易度: <strong>1550 ±13</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/26-01-04-01.png" alt="" class="wp-image-6942"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>クラスの学級委員である paiza 君は、クラスのみんなに次のような形式でアカウントの情報を送ってもらうよう依頼しました。</p>



<p class="has-gray-background-color has-background">名前 年齢 誕生日 出身地</p>



<p>送ってもらったデータを使いやすいように整理したいと思った paiza 君はクラス全員分のデータを次の形式でまとめることにしました。</p>



<p class="has-gray-background-color has-background">User{<br>    nickname : 名前<br>    old : 年齢<br>    birth : 誕生日<br>    state : 出身地<br>}</p>



<p>途中で名前が変わった際にいちいちデータを修正するのが面倒だと思ったあなたは、生徒の構造体と新しい名前を受け取り、その名前を修正する関数&nbsp;<code>changeName</code>&nbsp;を作成し、それを用いて生徒の名前を更新することにしました。</p>



<p>クラスの人数と全員の情報、更新についての情報が与えられるので、入力に従って名前を更新した後のクラスのメンバーの情報を出力してください。</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?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&lt;$n; $i++) {
        list($name, $old, $birth, $state) = explode(" ", trim(fgets(STDIN)));
        
        $student[] = array("name"=&gt;$name,
            "old"=&gt;$old, "birth"=&gt;$birth, "state"=&gt;$state);
    }
    
    for($i=0; $i&lt;$k; $i++) {
        list($num, $change_name) = explode(" ", trim(fgets(STDIN)));
        $student[$num-1]["name"] = $change_name;
    }
    
    //print_r($student);
    
    for($i=0; $i&lt;$n; $i++) {
        printf("%s %d %s %s\n", 
        $student[$i]["name"], $student[$i]["old"],
        $student[$i]["birth"], $student[$i]["state"]);
    }   
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="160" src="https://chokomon.com/wp-content/uploads/2022/09/26-01-04-02.png" alt="" class="wp-image-6943"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-01-04-00659/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クラス・構造体メニュー】構造体の整列 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-01-03-00658/</link>
					<comments>https://chokomon.com/26-class_primer-01-03-00658/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Wed, 21 Sep 2022 10:36:00 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1600]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6936</guid>

					<description><![CDATA[【クラス・構造体メニュー】> 【構造体の更新】STEP: 3 構造体の整列 (paizaランク C 相当) [難易度: 1662 ±15] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】> <a href="https://paiza.jp/works/mondai/class_primer/class_primer__sort" target="_blank" rel="noreferrer noopener">【構造体の更新】STEP: 3 構造体の整列 (paizaランク C 相当)</a> [難易度: <strong>1662 ±15</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/26-01-03-01.png" alt="" class="wp-image-6937"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>クラスの学級委員である paiza 君は、クラスのみんなに次のような形式でアカウントの情報を送ってもらうよう依頼しました。</p>



<p class="has-gray-background-color has-background">名前 年齢 誕生日 出身地</p>



<p>送ってもらったデータを使いやすいように整理したいと思った paiza 君はクラス全員分のデータを次の形式でまとめることにしました。</p>



<p class="has-gray-background-color has-background">User{<br>    nickname : 名前<br>    old : 年齢<br>    birth : 誕生日<br>    state : 出身地<br>}</p>



<p>この情報を扱いやすくするために、年齢が昇順になるようにデータを並び替えることにしました。<br>クラスメートの情報が与えられるので、並び替えた後のデータを出力してください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>1<br>koko 23 04/10 tokyo</p>



<p><strong>出力値（例）</strong><br>koko 23 04/10 tokyo</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    // Studentというクラス(型)を宣言。クラスの1文字目は大文字
    class Student {
     
      // プロパティ
      public $name;
      public $old;
      public $birth;
      public $state;
      //  メソッド
      function showData(){
        
      }
    }
    //クラスStudentのインスタンスを作成
    $deta = new Student;
    
    $n = trim(fgets(STDIN));
    for($i=0; $i&lt;$n; $i++) {
        list($name, $old, $birth, $state) = explode(" ", trim(fgets(STDIN)));
        
        $student[] = array("name"=&gt;$name,
            "old"=&gt;$old, "birth"=&gt;$birth, "state"=&gt;$state);
    }
    
    array_multisort(array_column($student, "old"), SORT_ASC, $student);
    //print_r($student);
    
    for($i=0; $i&lt;$n; $i++) {
        printf("%s %d %s %s\n", 
        $student[$i]["name"], $student[$i]["old"],
        $student[$i]["birth"], $student[$i]["state"]);
    }   
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="160" src="https://chokomon.com/wp-content/uploads/2022/09/26-01-03-02.png" alt="" class="wp-image-6938"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-01-03-00658/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クラス・構造体メニュー】構造体の検索 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-01-02-00657/</link>
					<comments>https://chokomon.com/26-class_primer-01-02-00657/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Tue, 20 Sep 2022 09:59:57 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1400]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6927</guid>

					<description><![CDATA[【クラス・構造体メニュー】&#62; 【構造体の更新】STEP: 2 構造体の検索 (paizaランク C 相当)&#160;[難易度:&#160;1417&#160;±13] ※リンク先へ移動するためには[paiza]へのログインが必要です…]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】&gt; <a href="https://paiza.jp/works/mondai/class_primer/class_primer__find" target="_blank" rel="noreferrer noopener">【構造体の更新】STEP: 2 構造体の検索 (paizaランク C 相当)</a>&nbsp;[難易度:&nbsp;<strong>1417&nbsp;±13</strong>]



<p>※リンク先へ移動するためには[<a href="https://paiza.jp/works" target="_blank" rel="noreferrer noopener">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/26-01-02-01.png" alt="" class="wp-image-6928"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>クラスの学級委員である paiza 君は、クラスのみんなに次のような形式でアカウントの情報を送ってもらうよう依頼しました。</p>



<p class="has-gray-background-color has-background">名前 年齢 誕生日 出身地</p>



<p>送ってもらったデータを使いやすいように整理したいと思った paiza 君はクラス全員分のデータを次のような構造体でまとめることにしました。</p>



<p class="has-gray-background-color has-background">student{<br>    name : 名前<br>    old : 年齢<br>    birth : 誕生日<br>    state : 出身地<br>}</p>



<p></p>



<p>年齢ごとの生徒の名簿を作る仕事を任された paiza 君はクラスメイトのうち、決まった年齢の生徒を取り出したいと考えました。<br>取り出したい生徒の年齢が与えられるので、その年齢の生徒の名前を出力してください。</p>



<p></p>



<p><strong>入力値（例）</strong><br>1<br>koko 23 04/10 tokyo<br>23</p>



<p><strong>出力値（例）</strong><br>koko</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    // Studentというクラス(型)を宣言。クラスの1文字目は大文字
    class Student {
     
      // プロパティ
      public $name;
      public $old;
      public $birth;
      public $state;
      //  メソッド
      function showData(){
        
      }
    }
    //クラスStudentのインスタンスを作成
    $deta = new Student;
    
    $n = trim(fgets(STDIN));
    for($i=0; $i&lt;$n; $i++) {
        list($name, $old, $birth, $state) = explode(" ", trim(fgets(STDIN)));
        
        $student[] = array("name"=&gt;$name,
            "old"=&gt;$old, "birth"=&gt;$birth, "state"=&gt;$state);
    }

    $k = trim(fgets(STDIN));
    
    $key = array_search($k, array_column($student, "old"));
    print_r($student[$key]["name"]);
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="160" src="https://chokomon.com/wp-content/uploads/2022/09/26-01-02-02.png" alt="" class="wp-image-6929"/></figure>



<h2 class="wp-block-heading">解説</h2>



<p>連想配列の値からキーを取得する　<strong>array_search()</strong>　を使用しました。</p>



<p>第一引数に検索したい文字列、第二引数に連想配列を入れます。</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    $fruits = array(
        "apple" =&gt;"リンゴ",
        "grape" =&gt;"ブドウ",
        "orange"=&gt;"オレンジ");
    
    echo array_search("リンゴ", $fruits);    //apple
?&gt;</pre></div>



<p></p>



<p>array_search()の注意点としては、</p>



<p>1)値に対してキーが存在しない場合は <strong>false</strong> が返ってきます。</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    $fruits = array(
        "apple" =&gt;"リンゴ",
        "grape" =&gt;"ブドウ",
        "orange"=&gt;"オレンジ");

    echo array_search("メロン", $fruits);    //false
?&gt;</pre></div>



<p></p>



<p>2)同じ値が二つ以上ある場合</p>



<p>同じ値が二つ以上ある場合は、最初に見つかったキーを返します。</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    $age = array(
        "taro"  =&gt; 14,
        "jiro"  =&gt; 15,
        "yuko"  =&gt; 20,
        "hanako"=&gt; 14);
    
    echo array_search(14, $age);    //taro (一番最初に見つかったキーが返る
?&gt;</pre></div>



<p></p>



<p>多次元の連想配列なので、第二引数に <strong>array_column()</strong> を使っています。</p>



<p></p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-01-02-00657/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【クラス・構造体メニュー】構造体の作成 (paizaランク C)-解答例-PHP編</title>
		<link>https://chokomon.com/26-class_primer-01-01-00656/</link>
					<comments>https://chokomon.com/26-class_primer-01-01-00656/#respond</comments>
		
		<dc:creator><![CDATA[東鳥子]]></dc:creator>
		<pubDate>Mon, 19 Sep 2022 22:59:21 +0000</pubDate>
				<category><![CDATA[paiza-問題集]]></category>
		<category><![CDATA[クラス・構造体メニュー]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ランクC]]></category>
		<category><![CDATA[難易度-1500]]></category>
		<guid isPermaLink="false">https://chokomon.com/?p=6922</guid>

					<description><![CDATA[【クラス・構造体メニュー】> 【構造体の更新】STEP: 1 構造体の作成 (paizaランク C 相当) [難易度: 1508 ±12] ※リンク先へ移動するためには[paiza]へのログインが必要です。 解答例]]></description>
										<content:encoded><![CDATA[
<p>【<a href="https://chokomon.com/paiza_mondai/26-class_primer/">クラス・構造体メニュー</a>】> <a href="https://paiza.jp/works/mondai/class_primer/class_primer__make" target="_blank" rel="noreferrer noopener">【構造体の更新】STEP: 1 構造体の作成 (paizaランク C 相当)</a> [難易度: <strong>1508 ±12</strong>]



<p>※リンク先へ移動するためには[<a rel="noreferrer noopener" href="https://paiza.jp/works" target="_blank">paiza</a>]へのログインが必要です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="300" src="https://chokomon.com/wp-content/uploads/2022/09/26-01-01-01.png" alt="" class="wp-image-6923"/></figure>



<div class="wp-block-dvaux-frame sc_frame_wrap inline"><div class="sc_frame_title inline" style="background-color:#ccc">問題文</div><div class="sc_frame" style="background-color:#fff;border-color:#ccc">
<p>クラスの学級委員である paiza 君は、クラスのみんなに次のような形式でアカウントの情報を送ってもらうよう依頼しました。</p>



<p class="has-gray-background-color has-background">名前 年齢 誕生日 出身地</p>



<p>送ってもらったデータを使いやすいように整理したいと思った paiza 君はクラス全員分のデータを次の形式でまとめることにしました。</p>



<p class="has-gray-background-color has-background">User{<br>nickname : 名前<br>old : 年齢<br>birth : 誕生日<br>state : 出身地<br>}</p>



<p></p>



<p>クラスメートの情報が与えられるので、それらを以上の形式でまとめたものを出力してください。</p>
</div></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答例</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
    // User{
    // nickname : koko
    // old : 23
    // birth : 04/10
    // state : tokyo
    // }
    
    $n = trim(fgets(STDIN));
    for($i=0; $i&lt;$n; $i++){
        list($name, $old, $birth, $state) = explode(" ", trim(fgets(STDIN)));
        
        echo "User{\n";
        printf("nickname : %s\n", $name);
        printf("old : %d\n", $old);
        printf("birth : %s\n", $birth);
        printf("state : %s\n", $state);
        echo "}\n";
    }
?&gt;</pre></div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="660" height="280" src="https://chokomon.com/wp-content/uploads/2022/09/26-01-01-02.png" alt="" class="wp-image-6924"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://chokomon.com/26-class_primer-01-01-00656/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
