C++ if文の質問です。 

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ののき

C++ if文の質問です。 

#1

投稿記事 by ののき » 8年前

初めての投稿です。こんな簡単なプログラミングで悩む自分が恥ずかしいのですが、どうしても解決できないので、こちらに依頼を立てました。

正答率が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);
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 8年前
住所: 東海地方
連絡を取る:

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

#2

投稿記事 by softya(ソフト屋) » 8年前

ソースコードは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) )
とすると条件範囲が分かりやすくて好きですね(強要する気はありません)。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ののき

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

#3

投稿記事 by ののき » 8年前

ありがとうございます。解決いたしました。
フォーラムも拝見させていただきましたので以後はそれに従い、投稿いたします。

maru
記事: 150
登録日時: 8年前

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

#4

投稿記事 by maru » 8年前

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

さて、本題。
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 を使うほうが一般的です。

たいちう
記事: 418
登録日時: 8年前

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

#5

投稿記事 by たいちう » 8年前

最初のプログラムだと、60点や70点の成績が付かないとか、
Dランクが複数あるとかのミスがありますね。

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

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

閉鎖

“C言語何でも質問掲示板” へ戻る