忍者ブログ

からすまる日誌

練習問題 うるう年(php)

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

練習問題 うるう年(php)


本番問題をばらすなとは書いてあったけど
練習問題はみなさん見られるわけだし
大丈夫かな。たぶん。

問題文:

閏年判定の条件
  1. 西暦が4で割り切れる年は閏年。
  2. ただし、100で割り切れる年は閏年ではない。
  3. ただし、400で割り切れる年は閏年。

授業でやったのに覚えてないのがつらい。

自分の回答:

<?php
$input_line = trim(fgets(STDIN));
//echo($input_line);
for ($i = 0; $i < $input_line; $i++) {
  $s = trim(fgets(STDIN));
  $s = str_replace(array("\r\n","\r","\n"), '', $s);
  $s = explode(" ", $s);
  //echo "s0 = ".$s[0]." , s1 = ".$s[1]."\n";
  //$hoge_s[i]=$s[0];
  //echo($s[0]);
  //echo("<br>");
  
  
  $year = $s[0];
    //うるう年の判定
    if($year % 400 == 0){
        //うるう年
        echo ($year ." is a leap year"."\n");
    }elseif($year % 100 == 0 ){
        //うるう年ではない
        echo ($year ." is not a leap year"."\n");
    }elseif($year % 4 ==0){
            //うるう年
        echo ($year ." is a leap year"."\n");
            
    }else{
         //うるう年ではない
         echo ($year ." is not a leap year"."\n");
    }
}
?>

模範解答:
<?php
// 入力される行数の取得
$line_size = fgets(STDIN, 256);
 
for( $i = 0; $i < $line_size ; $i++){
    $year = fgets(STDIN, 256);
    $year = rtrim($year);
    // うるう年判定
    if (($year % 4 == 0 && $year % 100 != 0) || $year % 400 == 0) {
          echo $year." is a leap year\n";
    } else {
          echo $year." is not a leap year\n";
    }
}
?>


またこんな知らない関数がでてきてからに。
fgets
https://qiita.com/kouheidev/items/d8ee3b078f75cc331f83

php manual
https://www.php.net/manual/ja/function.fgets.php

>ファイルから一行読み取る
文字列 = fgets(ハンドル)
ハンドルとはファイルを開いて処理しているときに、使用する管理用に用意されたものです。
ハンドルはファイルの処理位置を示していて、処理位置を進めていくことで開いたファイルの先頭から順に読み込むことや出力することができます。
https://techacademy.jp/magazine/11473

よくわからないがfetchでふさをばらしてforeachでぶん回したああいうイメージだろうか。



rtrimは昨日あたりに見た。

rtrim関数は文字列の末尾から空白(又は指定文字)を取り除き、取り除いた文字列を返す関数です。以下に使用例を示します。
http://php.quus.net/strings/rtrim.php
PR

コメント

ブログ内検索

カレンダー

03 2025/04 05
S M T W T F S
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