• ベストアンサー

if文で困っています。

define A 5 void main(void) int i; scanf("%d", &i); if (i <= A){ このような形をつくったのですが、if文のところで質問があります。 「数字をいくつか入力し、その入力したデータ数が5つより少ないときに・・・」というようなプログラムにしたいのですが、この場合、「入力した数値が5.0以下であるときに・・・」というプログラムになっているのではないかと、困っています。どちらが正しいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

一応 プログラムで飯食ってんだけど。 >「入力した数値が5.0以下であるときに・・・」 その通りですね。 データ数が5つより少ないのを判定したいなら count =0; while(scanf("%d", &i),i!=EOF(終了条件)) { count++; } if(count < A){・・・} と自分なら書くかな もっとスマートな書き方あるかも いかがでしょうか?

charmin
質問者

お礼

丁寧な解説をありがとうございます。 EOFは使ったことがないのですが、(終了条件)に何も入れなかったらやはりエラーがでてしまうのでしょうか?

その他の回答 (4)

回答No.5

ANo.3です。 >EOFは使ったことがないのですが、(終了条件)に何も入れなかった>らやはりエラーがでてしまうのでしょうか? 初心者ですね。 コンピュータは指定した計算はしてくれるが、計算方法は人間が考えないといけない。 所詮 コンピュータと言っても電卓が進化したものにすぎない。 >データ数が5つより少ないときに ということですが、じゃあ、いつまで(何回)入力するのという事がコンピュータにはわかりません。 仮にEOF(EOF はマクロで,-1 という値)を指定しましたが、絶対入力されない数値を指定してデータ入力の終わりを判定すべきだと思いますが。-32367 とかでもいい気がします・・・ 他にもいい方が法あるかも、俺の実力ならここまでだな

charmin
質問者

お礼

何度もありがとうございました。

回答No.4

   どちらも間違い。 iは、intなので、「入力した数値が 5 以下であるときに・・・」が正解。  

  • gonbee774
  • ベストアンサー率38% (198/511)
回答No.2

入力したデータ(変数i)と、定数A(=5)を比較しているということは、後者です。 >「数字をいくつか入力し、その入力したデータ数が5つより少ないときに・・・」というようなプログラムにしたいのですが、 なら、データ数を数えて、それと5を比較するようなコードにしなければならないと思います。

charmin
質問者

お礼

やはりそうでしたか。 どうもありがとうございました。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

gcc -E sourc.c とすればわかります。

charmin
質問者

お礼

早速の回答をありがとうございます。

関連するQ&A