三角形の面積を求めるプログラム

http://alfalfa.livedoor.biz/archives/51520760.html
読解力も極端に弱く、『三角形の面積を求めるプログラムをつくれ』という試験を出したら、『どういうことかわからない』といってきた学生がいる。 読めないのか、読む気がないのか、理解できない。『あまりにも稚拙だ』というと、『稚拙って何ですか』と聞き返してきた」

なるほど。では、三角形の面積を求めるプログラムを作ってみましょう。以下ソース。

三角形の面積を計算するよ
<form method="POST" action="sankaku.php">
底辺<input type="text" name="teihen" size="10">
高さ<input type="text" name="takasa" size="10">
<select name="tani">
 <option value="mm">mm
 <option value="cm">cm
 <option value="m">m
</select>
<br>
<input type="submit" value="求める">
</form>

<?php

if ($_SERVER["REQUEST_METHOD"]  == "POST") {
    $teihen = check_data($_POST["teihen"]);
    $takasa = check_data($_POST["takasa"]);
    $tani = $_POST["tani"];
    
    if($teihen && $takasa){
        $menseki = $teihen * $takasa / 2;
        $menseki = sprintf("%01.2f",$menseki);
        echo "底辺:".$teihen.$tani."、高さ".$takasa.$tani."の面積は<br>";
        echo $menseki.$tani."です。";
    }
    else
    {
        echo "底辺と高さは必須です";
    }
    
}

function check_data($str){
    $result = preg_match ( "/[0-9]/", $str) or die("半角数字で入力してください");
    if($str == 0){
        echo "底辺、高さに0は入力しないでください";
        exit;
    }
    return($str);
    }
?>

簡単じゃねーか!と舐めてかかったものの、意外と手間がかかった。しかも改良の余地あり。
まず、phpで作るからにはインタラクティブ性を…と思ったのでフォームから数値を入力させることに。
三角形の面積を求める公式は底辺×高さ÷2なので、この辺は基本がわかる人なら即出来るだろう。
やっかいなのが例外処理と小数点の問題。
入力時に整数しか選べないようにした。小数点でもよかったけどね…また今度。
半角数字以外やゼロを入力するとエラーになる設定にはした。
単位は超手抜きだが底辺も高さも一括で指定という仕様に。
肝心の面積の表示だが、小数点は第二位までの表示に。
参考にしたのは

http://side-b.sto.co.jp/weblog/archives/126

sprintfを使う、と。

何にでも真面目に取り組むって大事だな。もっと頑張ろう。