2017-10-06 21 views
-4

私のグレードの平均コードでは、a、b、c、d、fという文字グレードがありますが、実行しようとすると、この範囲。この意味がわかりません。あなたのプログラムでは、F、B、C、D、E、 -'c'はこのスコープ内で宣言されていません

#include<iostream> 

using namespace std; 

string average(int g); 

int main() 
{ 
    int grade; 

    cout << "Enter your grade:" << endl; 
    cin >> grade; 

    cout << "Your grade is a" << average(grade) << "!" << endl; 

    return 0; 
} 

string average(int g) 
{ 
    if (g >= 90 && g <= 100) 
    { 
     return a; 
    } 
    else if(g >= 80 && g <90) 
    { 
     return b; 
    } 
    else if (g > 70 && g < 80) 
    { 
     return c; 
    } 
    else if (g == 70) 
    { 
     return d; 
    } 
    else if (g < 70) 
    { 
     return f; 
    } 

    return 0; 
} 
+0

「return a」の代わりに「return」を使用してください。最初のケースではグレード文字列/テキスト "a"を返しています。 2番目のケース(元のコード内)では、スコープに含まれていない変数 'a 'を検索しようとしています。それがあなたに投げかけている苦情です。 – kaza

+0

これは問題を解決しませんが、 'if ... else if'ラダーでこれらの' <'チェックをすべて行う必要はありません。 'g 'が95の場合、最初のブランチが作成され、2番目のブランチの' g <90'は効果がありません。残りのすべての式で2番目のテストと同じです。それで 'if(g> = 90)... else if(g> = 80)... else if(g> = 70)... else ...' –

答えて

-1

あなたはどこにも宣言していないグレード:

は、ここに私のコードです。 コンパイラは、aが等級aを表し、bが等級bを表していることをどのように知っていますか?

あなたは、おそらくこのように、成績を宣言するために列挙型を使用することができます -

enum grades {a='a', b='b', c='c', d='d', e='e', f='f'}; 

これを行うために他の方法があります。 あなたの目標を達成するために使用するものは、あなたの決定に基づいてプログラムを修正する必要があります。

関連する問題