ボム君.com

Masa's blog

今まで学んできたITスキルを主に。

プログラミングチャレンジ:学生スコア計算式

問題:

  1. 学生の最終成績を次の5の倍数にする。
  2. 最終成績が40以下の場合は不合格。
  3. 満点は100点。
  4. 最終成績と元の成績の差が3以下の場合は元の成績を最終成績にする。


Sample Input

4
73
67
38
33

Sample Output

75
67
40
33
<?php

$handle = fopen ("php://stdin", "r");
function roundUpToAny($n,$x=5) {
    return round(($n+$x/2)/$x)*$x;
}

function solve($grades){
    // Complete this function
    for($i = 0; $i<count($grades);$i++){
        $score = $grades[$i];
        if($score >= 38){
            $roundscore = roundUpToAny($score);
            $grades[$i] = (abs($score - $roundscore)<3)?$roundscore:$score;
        }
    }
    
    return $grades;
}

fscanf($handle, "%d",$n);
$grades = array();
for($grades_i = 0; $grades_i < $n; $grades_i++){
   fscanf($handle,"%d",$grades[]);
}
$result = solve($grades);
echo implode("\n", $result)."\n";





?>