- ベストアンサー
if文で困っています。
define A 5 void main(void) int i; scanf("%d", &i); if (i <= A){ このような形をつくったのですが、if文のところで質問があります。 「数字をいくつか入力し、その入力したデータ数が5つより少ないときに・・・」というようなプログラムにしたいのですが、この場合、「入力した数値が5.0以下であるときに・・・」というプログラムになっているのではないかと、困っています。どちらが正しいのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
一応 プログラムで飯食ってんだけど。 >「入力した数値が5.0以下であるときに・・・」 その通りですね。 データ数が5つより少ないのを判定したいなら count =0; while(scanf("%d", &i),i!=EOF(終了条件)) { count++; } if(count < A){・・・} と自分なら書くかな もっとスマートな書き方あるかも いかがでしょうか?
その他の回答 (4)
- bonbontarou
- ベストアンサー率20% (4/20)
ANo.3です。 >EOFは使ったことがないのですが、(終了条件)に何も入れなかった>らやはりエラーがでてしまうのでしょうか? 初心者ですね。 コンピュータは指定した計算はしてくれるが、計算方法は人間が考えないといけない。 所詮 コンピュータと言っても電卓が進化したものにすぎない。 >データ数が5つより少ないときに ということですが、じゃあ、いつまで(何回)入力するのという事がコンピュータにはわかりません。 仮にEOF(EOF はマクロで,-1 という値)を指定しましたが、絶対入力されない数値を指定してデータ入力の終わりを判定すべきだと思いますが。-32367 とかでもいい気がします・・・ 他にもいい方が法あるかも、俺の実力ならここまでだな
お礼
何度もありがとうございました。
- yaemon_2006
- ベストアンサー率22% (50/220)
どちらも間違い。 iは、intなので、「入力した数値が 5 以下であるときに・・・」が正解。
- gonbee774
- ベストアンサー率38% (198/511)
入力したデータ(変数i)と、定数A(=5)を比較しているということは、後者です。 >「数字をいくつか入力し、その入力したデータ数が5つより少ないときに・・・」というようなプログラムにしたいのですが、 なら、データ数を数えて、それと5を比較するようなコードにしなければならないと思います。
お礼
やはりそうでしたか。 どうもありがとうございました。
- koko_u_
- ベストアンサー率18% (459/2509)
gcc -E sourc.c とすればわかります。
お礼
早速の回答をありがとうございます。
お礼
丁寧な解説をありがとうございます。 EOFは使ったことがないのですが、(終了条件)に何も入れなかったらやはりエラーがでてしまうのでしょうか?