2017-10-16 6 views
0

私はユーザーの入力に基づいて文字グレードを与えるこの小さなプログラムを作成しました。ユーザーが入力したときに数90または右の結果の上には表示されるようにパラレルアレイ、数値グレードと文字グレード

#include <iostream> 
using namespace std; 

int main(int argc, char** argv) { 

    int grade; // variable for user input 

    int numberGrade[] = {90, 80, 70, 60, 0}; // initializing an array for numeric grades 
    char letterGrade[] = {'A','B','C','D','F'}; // initializing an array for letter grades 

    cout << "Enter the grade : "; 
    cin >> grade; 

    // for loop to output the correct letter based on the userInput 
    for(int i = 0; i < 5; i++) { 
     if(grade >= numberGrade[i] && grade < numberGrade[i-1]) 
      cout << "The grade is " << letterGrade[i] << endl; 
    } 
    return 0; 
} 

どのように私は多分私のifステートメントを変更することができます。すべてはユーザーが数90以上、そのつもりはないディスプレイに入ったときに、正しい文字を除いてうまく機能しますか?

+0

質問:i == 0のとき、どの配列インデックスがルックアップされていますか? '&& grade

+0

最も簡単な方法は 'if(grade> = 90)char letterGrade1 = 'A'をチェックするこのif文の前に別の' if'文を書くことです。 cout << "グレードは" << letterGrade1 << endl; – nakulchawla09

答えて

0

forループ内のif条件がグレード「A」に対して正しくありません。これは、i = 0の場合のnumberGrade [i-1]がi = -1であるためです。したがって、あなたはその答えを得られません! HERE

はCODE IS:

int main() { 
int grade; // variable for user input 

int numberGrade[] = {90, 80, 70, 60, 0}; // initializing an array for numeric grades 
char letterGrade[] = {'A','B','C','D','F'}; // initializing an array for letter grades 

cout << "Enter the grade : "; 
cin >> grade; 
int flag = 0; 
// for loop to output the correct letter based on the userInput 
for(int i = 4; i >= 0 ; i--) 
{ 
    if(grade >= numberGrade[i]) 
     continue; 

    else 
    { 
     flag = 1; 
     cout << "The grade is " << letterGrade[i+1] << endl; 
     break; 
    } 

} 
if(!flag) 
    cout << "The grade is " << letterGrade[0] << endl; 

return 0; } 

私たちはただフラグを追加し、グレード「」の状態をチェックし、それはかなり自明だと思います。

+0

ありがとう、Sahil Shah。しかし、else文だけを使ってそれを行う可能性はありますか? – BumBum

+0

現在のロジックではできますが、できません。物事を複雑にしないようにしようとするなら、この方法は大丈夫です。 あなたはあなたのロジックを間違いなく変更することができ、if-else条件を使ってロジックを実装することができます。 –

関連する問題