0

私はオンラインで C++ に挑戦していますが、この部分で立ち往生しています。

基本的には以下の課題です。

「Derp は大学の学生です。彼の好きな授業は数学です。年末が近づいており、Derp は成績 "K" を取得するために最後の試験で何点取る必要があるかを自問しています。

教師は今年 5 つのテストを行いました。テストで獲得できる最大ポイントは 100 です。

If <=60 = Grade : 1
If >=60 && <= 69 = Grade : 2
If >=70 && <= 79 = Grade : 3
If >=80 && <= 89 = Grade : 4
If >=90 && <= 100 = Grade: 5

89.8 点を取得した場合、グレード 5 ではなくグレード 4 になります。彼の最初の 4 つのテスト (T1、T2、T3、T4) の結果はわかっています。最後のテストで、Derp が希望の成績「K」を取得するために必要な最小ポイント数を見つけなければなりません。

入力: 入力では、最初に、Derp "K" (2<= K <= 5) によって希望するグレードを入力します。2 行目では、最初の 4 つのテストの結果を入力します。(0 <= T1、T2、T3、T4 <=100)

出力: Derp が希望する数学の成績 "K" を取得するために、最後のテストで取得する必要のある最小ポイント数を出力する必要があります。最後のテストで最高点を取ったとしても、Derp がグレード「K」を取得する可能性がない場合は、「不可能」と出力する必要があります。」

例:

入力: 5 100 100 100 100

出力: 50

入力: 5 10 20 30 40

出力: 不可能

入力: 2 100 100 100 100

出力: 0

入力: 4 83 74 79 73

出力: 91

これが私がこれまでに得たものです。

#include <iostream>

using namespace std;

int main()
{
    int grade;
    cin >> grade;
    int t1,t2,t3,t4;
    cin >> t1 >> t2 >> t3 >> t4;
    if((t1+t2+t3+t4)/4<=59)
    {
        cout << "Grade: 1\n";
    }
    else if((t1+t2+t3+t4)/4>=60 && (t1+t2+t3+t4)/4<=69)
    {
        cout << "Grade: 2\n";
    }
    else if((t1+t2+t3+t4)/4>=70 && (t1+t2+t3+t4)/4<=79)
    {
        cout << "Grade: 3\n";
    }
    else if((t1+t2+t3+t4)/4>=80 && (t1+t2+t3+t4)/4<=89)
    {
        cout << "Grade: 4\n";
    }
    else if((t1+t2+t3+t4)/4>=90 && (t1+t2+t3+t4)/4<=100)
    {
        cout << "Grade: 5\n";
    }
    int t5;
    return 0;
}

私もいくつかの計算を行い、これに来ました。

(100+100+100+100+x)/5>=90

(400+x)/5>=90

80+x/5 >= 90

x/5 >= 10

× >= 50

これは基本的に、数学的に言えば、上記の最初の入力/出力の例です。ただし、これをどのようにコーディングするかはわかりません。どんなアイデアでも大歓迎です!

ありがとうございました。

4

2 に答える 2

0

(t1 + t2 + t3 + t4 + t5)/5 = K
ここで、K は、指定された K の範囲内の最小の数値に等しくなります (3 の場合、K = 70)。

t5 について解く:

t5 = 5k - t1 - t2 - t3 - t4

t5 <= 100 の場合、t5 が答えです。それ以外の場合は不可能です。

于 2013-03-01T15:26:45.857 に答える
0

ポイントは、必要な平均ポイント数を使用して結果を計算する必要があることです。基本的に、5、4、3、および 2 を取得するために必要な平均がそれぞれ 90、80、70、および 60 である場合、5 つのテストのスコアの合計は 450、400、350、および 300 です。 Derp が必要とするスコアからこれまでのスコアを引いたものが 100 点を超える場合、これ以上の点数を獲得することは不可能です。実際の実装は次のようになります。

int main()
{
    int mark;
    int t1, t2, t3, t4;

    std::cin >> mark >> t1 >> t2 >> t3 >> t4;
    int total = t1 + t2 + t3 + t4;
    int total_needed = 5 * (60 + (mark - 2) * 10);
    int diff = total_needed - total;

    if (diff > 100) {
    std::cout << "Impossible" << std::endl;
    } else if (diff <= 0) {
        std::cout << "You have already got enough points" << std::endl;
    } else {
        std::cout << diff << " points needed yet" << std::endl;
    }

    return 0;
}
于 2013-03-01T15:28:28.423 に答える