1

したがって、このプログラムは、入力したパーセントに基づいて成績を表示するためのサポートであり、基本的に if ステートメントと else ステートメントのみを使用してコーディングしました。プログラムは 59% までは機能しますが、それ以上の値を入力すると機能しません。プログラムのように、59% を超えると成績を教えてくれません。

psこれをプログラムするもっと簡単な方法がおそらくあったことは知っていますが、ifステートメントとelseステートメントを練習したかったのです......

//
//exercise 1.
//you will enter in your percent and it will anounce your grade.
//create a program so that it will notify the user of their letter grade
//0-59 F 60-69 D 70-79 C 80-89 B 90-100 A
//a=user input
//For whatever reason the program seems to only work up to 59% and after that it doesn't work.



int a;
#include <iostream>
using namespace std;
int main()
{
cout<< "Enter in the percent of your grade and \n I will tell you your grade"<<endl;
cin>>a;
if(a==100)
{
    cout<<"you scored a perfect A";
}
else 
    if(a<=59)
    {
        if(a<0)
        {
            cout<<"your really stupid";
        }
        else
            cout<<"you failed";
    }
    else
        if(a>=60)
        {
            if(a<=69)
            {
                cout<<"You got a D";
            }
        }
        else
            if(a>=70)
            {
                if(a<=79)
                {
                    cout<<"you got a C";
                }
            }
            else
                if(a>=80)
                {
                    if(a<=89)
                    {
                        cout<<"you got a B";
                    }
                }
                else
                    if(a>=90)
                    {


                            cout<<"you got an A";

                    }


}
4

3 に答える 3

1

問題は、a >= 60... かどうかをチェックしていることです (a = 75 とします)。ただし、他の条件ステートメントではキャッチされません。コード内の以下のコメントでよりよく説明されています。

#include <iostream>
using namespace std;

int a;
int main()
{
cout<< "Enter in the percent of your grade and \n I will tell you your grade"<<endl;
cin>>a;
if(a==100)
{
    cout<<"you scored a perfect A";
}
else 
    if(a<=59)
    {
        if(a<0)
        {
            cout<<"your really stupid";
        }
        else
            cout<<"you failed";
    }
    else
        if(a>=60) // 75 >= 60
        {
            if(a<=69) // But 75 is > 69
            {
                cout<<"You got a D";
            }
        }
        // ONLY REACHES THIS POINT IF a < 60
        else
            if(a>=70)
            {
                if(a<=79)
                {
                    cout<<"you got a C";
                }
            }
            else
                if(a>=80)
                {
                    if(a<=89)
                    {
                        cout<<"you got a B";
                    }
                }
                else
                    if(a>=90)
                    {
                            cout<<"you got an A";

                    }
}

これはおそらくより良いアプローチでしょう:

int main()
{
    cout<< "Enter in the percent of your grade and \n I will tell you your grade"<<endl;
    cin>>a;
    if(a==100)
    {
        cout<<"you scored a perfect A";
    }
    else 
    {
        if(a<=59)
        {
            if(a<0)
            {
                cout<<"your really stupid";
            }
            else
                cout<<"you failed";
            }
        else
        {
            if (a >= 60 && a <= 69)
            {
                cout << "D";
            }
            else if (a >= 70 && a <= 79)
            {
                cout << "C";
            }
            else if (a >= 80 && a <= 89)
            {
                cout << "B";
            }
            else
            {
                cout << "A";
            }
        }
    }
}
于 2013-01-09T19:03:28.620 に答える
0

最初の他の後に括弧がないと思います。

これを試して:

//
//exercise 1.
//you will enter in your percent and it will anounce your grade.
//create a program so that it will notify the user of their letter grade
//0-59 F 60-69 D 70-79 C 80-89 B 90-100 A
//a=user input
//For whatever reason the program seems to only work up to 59% and after that it doesn't work.



int a;
#include <iostream>
using namespace std;
int main()
{
cout<< "Enter in the percent of your grade and \n I will tell you your grade"<<endl;
cin>>a;
if(a==100)
{
    cout<<"you scored a perfect A";
}
else
{ 
    if(a<=59)
    {
        if(a<0)
        {
            cout<<"your really stupid";
        }
        else
            cout<<"you failed";
    }
    else
        if(a>=60)
        {
            if(a<=69)
            {
                cout<<"You got a D";
            }
        }
        else
            if(a>=70)
            {
                if(a<=79)
                {
                    cout<<"you got a C";
                }
            }
            else
                if(a>=80)
                {
                    if(a<=89)
                    {
                        cout<<"you got a B";
                    }
                }
                else
                    if(a>=90)
                    {


                            cout<<"you got an A";

                    }

}
} // end main
于 2013-01-09T19:04:19.593 に答える
0

コードで に到達するとすぐにif(a>=60)、 の値がa70 以上の場合、何も出力されず、真の条件が見つかったため、コードは条件を終了します。59 を超えると何もできない理由については、うまくいくように見えるのでわかりません。ただし、内側の if ブロックをその親ブロックと組み合わせることで、コードaが 10 パーセント ポイントのグループ内にあるかどうかを確認し、そのグループ内にない場合は次のブロックに進むことができます。以下は、これを行う方法の例です。

//
//exercise 1.
//you will enter in your percent and it will anounce your grade.
//create a program so that it will notify the user of their letter grade
//0-59 F 60-69 D 70-79 C 80-89 B 90-100 A
//a=user input
//For whatever reason the program seems to only work up to 59% and after that it doesn't work.



int a;
#include <iostream>
using namespace std;
int main()
{
  cout<< "Enter in the percent of your grade and \n I will tell you your grade"<<endl;
  cin>>a;
  if(a==100)
  {
      cout<<"you scored a perfect A";
  }
  else if(a<=59)
  {
      if(a<0)
      {
          cout<<"your really stupid";
      }
      else
      {
          cout<<"you failed";
      }
  }
  else if(a>=60 && a<=69)
  {
      cout<<"You got a D";
  }
  else if(a>=70 && a<=79)
  {
      cout<<"you got a C";
  }
  else if(a>=80 && a<=89)
  {
      cout<<"you got a B";
  }
  else if(a>=90)
  {
      cout<<"you got an A";
  }
}
于 2013-01-09T19:13:38.027 に答える