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

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

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

#1

投稿記事 by SI » 15年前

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文とかは使わないでください。

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

dic

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

#2

投稿記事 by dic » 15年前

bool error = false;

if( avg > 100 )
error = true;

...

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

ではどうでしょう?

SI

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

#3

投稿記事 by SI » 15年前

すみません。
初心者でbool error = false;とかの意味がわかりません。

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

たかぎ

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

#4

投稿記事 by たかぎ » 15年前

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

こういうこと?

_Bool error = 0;

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

SI

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

#5

投稿記事 by SI » 15年前

Boolというのはまだ習っていません。

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

パコネコ

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

#6

投稿記事 by パコネコ » 15年前

今覚えるか、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文を使ったプログラムで質問です

#7

投稿記事 by たかぎ » 15年前

ちなみに、bool, true, falseといったマクロを使うには、<stdbool.h>をインクルードする必要があります。

> C言語で質問です。

とのことですので...

SI

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

#8

投稿記事 by SI » 15年前

でもそういうのを使わないでもできるって聞いたんですが。

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

パコネコ

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

#9

投稿記事 by パコネコ » 15年前

一番簡単なのは最後にも条件をつける。

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

SI

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

#10

投稿記事 by SI » 15年前

そのやり方がありましたか!

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

SI

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

#11

投稿記事 by SI » 15年前

なんとか出来ました。

#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文を使ったプログラムで質問です

#12

投稿記事 by パコネコ » 15年前

多分まだ知らないのだと思いますが、
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);
}
}

画像

SI

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

#13

投稿記事 by SI » 15年前

皆さんありがとうございました。
無事解決しました

閉鎖

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