0

変数のグループ化の評価尺度を作成しようとしています。私はいくつかの問題に直面しており、現時点では完全に脳死状態です。これを達成する方法について誰か助けてもらえますか?非常に高く評価!

function ovr_grade($talent, $physical, $entertainment, $reputation, $overness) {
if ($talent || $physical || $entertainment || $reputation || $overness >= 90) {
return "Grade: A";
} elseif ($talent || $physical || $entertainment || $reputation || $overness >= 80) {
return "Grade: B";
} elseif ($talent || $physical || $entertainment || $reputation || $overness >= 70) {
return "Grade: C";
} elseif ($talent || $physical || $entertainment || $reputation || $overness >= 60) {
return "Grade: D";
} elseif ($talent || $physical || $entertainment || $reputation || $overness >= 50) {
return "Grade: E";
} elseif ($talent || $physical || $entertainment || $reputation || $overness <= 49) {
return "Grade: F";
} else {
return "N/A";
}
}

echo ovr_grade();
4

8 に答える 8

2

試す:

if (max($talent,$physical,$entertainment,$reputation) >= 90 )
{
       return "Grade: A";
}
elseif ...........
于 2013-07-18T03:57:01.340 に答える
1
function ovr_grade($talent, $physical, $entertainment, $reputation, $overness) {
    $values = array($talent, $physical, $entertainment, $reputation, $overness);
    $average = array_sum($values) / count($values);
    if ($average >=90)
        return "Grade: A";
    if ($average >=80)
        return "Grade: B";
    if ($average >=70)
        return "Grade: C";
    if ($average >=60)
        return "Grade: D";
    if ($average >=50)
        return "Grade: E";
    if ($average <=49)
        return "Grade: F";
    else
        return "N/A";
}
于 2013-07-18T03:55:25.247 に答える
0

条件を次のように再構築する必要があると思います。

function ovr_grade($talent, $physical, $entertainment, $reputation, $overness) {
if ($talent >= 90 || $physical >= 90 || $entertainment >= 90 || $reputation >= 90 || $overness >= 90) {
return "Grade: A";
} elseif ($talent >= 80 || $physical >= 80 || $entertainment >= 80 || $reputation >= 80 || $overness >= 80) {
return "Grade: B";
} elseif ($talent >= 70 || $physical >= 70 || $entertainment >= 70 || $reputation >= 70 || $overness >= 70) {
return "Grade: C";
} elseif ($talent >= 60 || $physical >= 60 || $entertainment >= 60 || $reputation >= 60 || $overness >= 60) {
return "Grade: D";
} elseif ($talent >= 50 || $physical >= 50 || $entertainment >= 50 || $reputation >= 50 || $overness >= 50) {
return "Grade: E";
} elseif ($talent <= 49 || $physical <= 49 || $entertainment <= 49 || $reputation <= 49 || $overness <= 49) {
return "Grade: F";
} else {
return "N/A";
}
}

echo ovr_grade(90,90,90,90,90);//input their respective values

したがって、すべての値はブール値ではなく数値と比較されます。

于 2013-07-18T03:53:46.100 に答える
0

「N/A」を返す必要はないと思います。50 を超えるものがない場合は、"Grade:F" を返すだけです。

于 2013-07-18T04:28:27.967 に答える
0

まず第一に、この関数から得たい結果に関する要件について、詳細をほとんど書きませんでした。機能を確認しましたが、重大な状態の問題があります。

ここで、誰かがいずれかのカテゴリで 90 を取得した場合に "Grade: A" を表示する必要がある場合 (たとえば、$talent で 90、$physical で 90、$entertainment で 90 など)、作成した関数は正常に動作しています。次のように関数を初期化するだけです。

function ovr_grade($talent, $physical, $entertainment, $reputation, $overness) {
if ($talent >= 90 || $physical >= 90 || $entertainment >= 90 || $reputation >= 90 || $overness >= 90) {
return "Grade: A";
} elseif ($talent >= 80 || $physical >= 80 || $entertainment >= 80 || $reputation >= 80 || $overness >= 80) {
return "Grade: B";
} elseif ($talent >= 70 || $physical >= 70 || $entertainment >= 70 || $reputation >= 70 || $overness >= 70) {
return "Grade: C";
} elseif ($talent >= 60 || $physical >= 60 || $entertainment >= 60 || $reputation >= 60 || $overness >= 60) {
return "Grade: D";
} elseif ($talent = 50 || $physical = 50 || $entertainment = 50 || $reputation = 50 || $overness >= 50) {
return "Grade: E";
} elseif ($talent <= 49 || $physical <= 49 || $entertainment <= 49 || $reputation <= 49 || $overness <= 49) {
return "Grade: F";
} else {
return "N/A";
}
}

echo ovr_grade(90,90,90,90,90);

その後、目的の結果が得られるはずです。しかし、誰かがすべてのカテゴリで 90 を獲得したときに「グレード: A」を表示したい場合は、次のように条件を編集する必要があります。

function ovr_grade($talent, $physical, $entertainment, $reputation, $overness) {
if ($talent >= 90 && $physical >= 90 && $entertainment >= 90 && $reputation >= 90 && $overness >= 90) {
return "Grade: A";
} elseif ($talent >= 80 && $physical >= 80 && $entertainment >= 80 && $reputation >= 80 && $overness >= 80) {
return "Grade: B";
} elseif ($talent >= 70 && $physical >= 70 && $entertainment >= 70 && $reputation >= 70 && $overness >= 70) {
return "Grade: C";
} elseif ($talent >= 60 && $physical >= 60 && $entertainment >= 60 && $reputation >= 60 && $overness >= 60) {
return "Grade: D";
} elseif ($talent = 50 && $physical = 50 && $entertainment = 50 && $reputation = 50 && $overness >= 50) {
return "Grade: E";
} elseif ($talent <= 49 && $physical <= 49 && $entertainment <= 49 && $reputation <= 49 && $overness <= 49) {
return "Grade: F";
} else {
return "N/A";
}
}

echo ovr_grade(90,90,90,90,90);

これはあなたを助けると思います。さらに何か必要な場合は、お気軽にお問い合わせください。

ありがとう

于 2013-07-18T04:04:23.427 に答える
0

ジェームズ に影響をうけたサウンド

 $grade = array(
                        'A'=>90,
                        'B'=>80,
                        'C'=>70,
                        'D'=>60,
                        'E'=>50,
                        'F'=>40,                
                        );

        $obtained = max($talent,$physical,$entertainment,$reputation);
        $grading_flag = floor($obtained / 10)*10;
        echo $grade[$gr];

    /* ambiguous about your fail  status */
于 2013-07-18T04:40:52.610 に答える