ページ 11

if文を使ったプログラムで質問です

Posted: 2010年9月16日(木) 18:14
by SI
C言語で質問です。

#include <stdio.h>

void main(void)
{
double ave;
char lank;

printf("平均値:");

scanf("%lf", &ave);


if(ave>100) {
printf("エラー");
}
else if(ave>=75){
lank='A';
}
else if(ave>=50){
lank='B';
}
else if(ave>=25){
lank='C';
}
else if(ave>=0){
lank='D';
}
else{
printf("エラー");
}
printf("\n平均:%7.1lf点 評価:%c\n", ave, lank);
}

数値を入力するとA,B,C,Dのランク付けされて、100を超えた数値と0未満の数値を入力したらエラーと表示したいのですが、

101を入力したら上のプログラムだとエラーとは表示されるのですが下のような表示結果が出てきます。
平均値:101
エラー
平均: 101.0点 評価:

平均と評価は出ないようにしたいです。


なので下のような結果にしたいです。
平均値:101
エラー

どうしたら良いのでしょうか?
return文とかは使わないでください。

初心者なので簡単な感じでお願いします。

Re:if文を使ったプログラムで質問です

Posted: 2010年9月16日(木) 18:21
by dic
bool error = false;

if( avg > 100 )
error = true;

...

if( error == false )
printf( "\n平均..." );

ではどうでしょう?

Re:if文を使ったプログラムで質問です

Posted: 2010年9月16日(木) 18:24
by SI
すみません。
初心者でbool error = false;とかの意味がわかりません。

初心者用のプログラムにしてもらえませんか?

Re:if文を使ったプログラムで質問です

Posted: 2010年9月16日(木) 18:31
by たかぎ
> 初心者用のプログラムにしてもらえませんか?

こういうこと?

_Bool error = 0;

そもそも初心者なら、利用規約を熟読して、余計な手間を省く努力をしましょう。

Re:if文を使ったプログラムで質問です

Posted: 2010年9月16日(木) 18:36
by SI
Boolというのはまだ習っていません。

エラーのときは平均と評価を出さないようにしたいのですが。
やっぱそういうのを使わないと無理なんでしょうか?

Re:if文を使ったプログラムで質問です

Posted: 2010年9月16日(木) 18:39
by パコネコ
今覚えるか、int宣言でやるかですね。
//bool error = false;
int error=0;

if( avg > 100 )
// error = true;
error = 1;

...

//if( error == false )
if( error == 0 )
printf( "\n平均..." );

簡単にはこういうこと。(のはず…
dicさんのコピーさせていただきました。

Re:if文を使ったプログラムで質問です

Posted: 2010年9月16日(木) 18:41
by たかぎ
ちなみに、bool, true, falseといったマクロを使うには、<stdbool.h>をインクルードする必要があります。

> C言語で質問です。

とのことですので...

Re:if文を使ったプログラムで質問です

Posted: 2010年9月16日(木) 18:46
by SI
でもそういうのを使わないでもできるって聞いたんですが。

僕が書いたプログラムをちょっと修正するくらいでは出来ないのでしょうか?

Re:if文を使ったプログラムで質問です

Posted: 2010年9月16日(木) 18:53
by パコネコ
一番簡単なのは最後にも条件をつける。

if(ave<=100)
printf("\n平均:%7.1lf点 評価:%c\n", ave, lank);

Re:if文を使ったプログラムで質問です

Posted: 2010年9月16日(木) 18:59
by SI
そのやり方がありましたか!

あと-1とか入力したときも出ないようにしたいのですが。
何度もすみません。

Re:if文を使ったプログラムで質問です

Posted: 2010年9月16日(木) 19:10
by SI
なんとか出来ました。

#include <stdio.h>

void main(void)
{
double ave;
char lank;

printf("平均値:");

scanf("%lf", &ave);


if(ave>100)
{
printf("エラー\n");
}
else if(ave>=75)
{
lank='A';
}
else if(ave>=50)
{
lank='B';
}
else if(ave>=25)
{
lank='C';
}
else if(ave>=0)
{
lank='D';
}
else
{
printf("エラー\n");
}


if(ave<=100)
{
if(ave>=0)
{
printf("平均:%7.1lf点 評価:%c\n", ave, lank);
}
}

}

これでエラーのときは平均と評価が出ないようになりましたが、コンパイルは通ったのですがプログラム的にはおかしいというところは無いでしょうか?
ifの中にifとかやっちゃったんですが大丈夫だったでしょうか?

Re:if文を使ったプログラムで質問です

Posted: 2010年9月16日(木) 19:14
by パコネコ
多分まだ知らないのだと思いますが、
if(ave<=0 && 100<=ave)
という書き方があります。
他にも「||」とかもあります。
その辺は勉強していけば、すぐわかりますよ。

あとif文の中にif文を書いても問題はありません。

=========
すでに解決になっていたのでこっそり。
ちょこっと短くしてみた。
#include <stdio.h>
void main(void){
double ave;
char lank;

printf("平均値:");
scanf("%lf", &ave);
if(ave<0 || 100<ave){
printf("エラー");
}
else{
lank='D'-(int)ave/25+(int)ave/100;
printf("\n平均:%7.1lf点 評価:%c\n", ave, lank);
}
}

画像

Re:if文を使ったプログラムで質問です

Posted: 2010年9月16日(木) 19:16
by SI
皆さんありがとうございました。
無事解決しました