摂氏と華氏を反転させる関数
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 40 41 42 43 |
<?php while(true){ $s = trim(fgets(STDIN)); if($s === ""){ break; } $out = invertCelsiusAndFahrenheit($s); echo $s . " -> " . $out . PHP_EOL; } /* 問題:摂氏(℃)を入力すると華氏(°F)に変換し、華氏を入力すると摂氏に変換する関数を作成せよ 摂氏の場合は"26C"のように入力し、華氏の場合は"67F"のように入力する */ function invertCelsiusAndFahrenheit($s){ $errMsg = '無効な入力です : ' . $s; $tail = mb_substr($s, -1); if($tail !== 'C' && $tail !== 'F'){ // 例外。CまたはFで終わらない throw new Exception($errMsg); } $num = mb_substr($s, 0, strlen($s) - 1); if(!is_numeric($num)){ // 例外。数値形式じゃない throw new Exception($errMsg); } /* CHECK OK */ $num = intval($num); if($tail === "C"){ // セ氏=>華氏 $outNum = $num * 9 / 5 + 32; $outTail = "F"; }else{ // 華氏=>セ氏 $outNum = ($num - 32) * 5 / 9; $outTail = "C"; } $output = $outNum . $outTail; return $output; } |
1 2 3 4 5 |
26C -> 78.8F 67F -> 19.444444444444C -67F -> -55C 0C -> 32F 0F -> -17.777777777778C |