ページ 11

C++ if文の質問です。 

Posted: 2011年2月22日(火) 12:22
by ののき
初めての投稿です。こんな簡単なプログラミングで悩む自分が恥ずかしいのですが、どうしても解決できないので、こちらに依頼を立てました。

正答率が0~60%の場合は成績をFと表示し、同様に61~70%をD、71~80をC、81~90をB、91~100をAで表示するプログラムです。
これをコンパイルすると、error C2143: 構文エラー : ';' が '&&' の前にありません。と表示され、失敗してしまいます。
どのように修正すれば、動くのでしょうか。よろしくお願いいたします。

コード:

#include <iostream>
char line[100];
int seitou;
int main()
{
	using namespace std;
	
	cout<<"正答率を入力し,enter keyを押してください";
	cin>>seitou;
	if  (seitou>=0)&&(seitou<60)
		cout<<"成績は"<<"Fです"<<"\n";
	if(seitou>61)&&(seitou<70)
		cout<<"成績は"<<"Dです"<<"\n";
	if(seitou>71)&&(seitou<80)
		cout<<"成績は"<<"Cです"<<"\n";
	if(seitou>81)&&(seitou<90)
		cout<<"成績は"<<"Bです"<<"\n";
	if(seitou>91)&&(seitou<=100)
		cout<<"成績は"<<"Dです"<<"\n";

	
	
	



return(0);
}

Re: C++ if文の質問です。 

Posted: 2011年2月22日(火) 12:41
by softya(ソフト屋)
ソースコードはcodeタグで囲ってくださいね(修正させていただきました)。
詳しくはフォーラムルールを御覧ください。
http://dixq.net/board/board.html

さて、if文の基本構文の使い方の間違いですね。

コード:

// if文その1
if( 条件 ) 条件成立時の実行文
// if文その2
if( 条件 ) {
 条件成立時の実行文
}
のどちらかの必要があります。
if (seitou>=0)&&(seitou<60)
だとカッコが足らないので、
if( (seitou>=0)&&(seitou<60) )
とすれば大丈夫です。
私の趣味からすると
if( (0<=seitou)&&(seitou<60) )
とすると条件範囲が分かりやすくて好きですね(強要する気はありません)。

Re: C++ if文の質問です。 

Posted: 2011年2月22日(火) 13:48
by ののき
ありがとうございます。解決いたしました。
フォーラムも拝見させていただきましたので以後はそれに従い、投稿いたします。

Re: C++ if文の質問です。 

Posted: 2011年2月23日(水) 12:04
by maru
ののき さんが書きました:ありがとうございます。解決いたしました。
フォーラムも拝見させていただきましたので以後はそれに従い、投稿いたします。
それならば、「解決した方法を明記して下さい。」とあったはずですが。
ついでに解決したら「解決」チェックボックスをチェックしておいていただけるとよろしいかと。

さて、本題。
softya(ソフト屋) さんが書きました: 私の趣味からすると
if( (0<=seitou)&&(seitou<60) )
とすると条件範囲が分かりやすくて好きですね(強要する気はありません)。
も範囲が分かりやすく、読みやすいのですが、それぞれの範囲が連続しているので、こんな書き方もあります。

コード:

#include <iostream>
char line[100];
int seitou;
int main()
{
    using namespace std;
    
    cout<<"正答率を入力し,enter keyを押してください";
    cin>>seitou;

    if  ((seitou < 0) || (seitou > 100))
    {   cout<<"成績は範囲外です"<< endl;
    } else if (seitou <= 60)
    {   cout<<"成績はFです"<< endl;
    } else if (seitou <= 70)
    {   cout<<"成績はDです"<< endl;
    } else if (seitou <= 80)
    {   cout<<"成績はCです"<< endl;
    } else if (seitou <= 90)
    {   cout<<"成績はBです"<< endl;
    } else if (seitou <= 100)
    {   cout<<"成績はAです"<< endl;
    }
    return(0);
}
最初に範囲外をチェックしておけば、いちいち範囲の両端を調べなくとも、範囲の境界の値だけを調べていけばいいです。
また cout で"\n"を出力するなら、endl を使うほうが一般的です。

Re: C++ if文の質問です。 

Posted: 2011年2月23日(水) 20:02
by たいちう
最初のプログラムだと、60点や70点の成績が付かないとか、
Dランクが複数あるとかのミスがありますね。

> とすると条件範囲が分かりやすくて好きですね(強要する気はありません)。

判りやすい書き方が重要だという実例ですね。