- 締切済み
while文の作成について
キーボードに整数を打ち込み、0を打ち込むと終了し、その合計を出すプログラムを以下のように作りました。 #include<stadio.h> int main(void){ int num=0 int sum=0 printf("整数を入力"\n"); do{ scanf("%d",&num); sum +=num; }while(num); printf("合計は%dです。\n",sum); returen 0; } 次に負の値が入力されるまで整数を読み込み続け、その合計をを求めるプログラムを作りたいのですが、whileのところを }while(num>=0); としてみたのですが、うまくいきません。また分かり易くするため、入力した整数の個数も表示できるようにしたいです。どうすればよいでしょうか。詳しい方、教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yama5140
- ベストアンサー率54% (136/250)
>次に負の値が入力されるまで整数を読み込み続け、その合計を求める・・ ここからは、最後の「負の値」までの「合計を求める」と読めますが、そうではないのですね。 「負の値」は、単にストッパーの役割?で、合計には加えたくない。 だから、 >・・、うまくいきません。 ですね。 もし、これが邪推でしたら以降、無視して下さい。 -------------------------------------------------------------------- ヒント ・入力、積算、正負判定(質問者様のプログラム) ・入力、正負判定、積算 まっ、「判定」を while() で行っているため、それをうまく使いたい、というのは判りますが・・。 iCnt = 0; ← 「入力した整数の個数」用変数 do{ scanf( "%d", &num ); num が負であったら break; ← 判定★ iCnt++; ← 実際に合計する(した)ものをカウント、下のステップの下でも・・。 sum += num; }while( 1 ); ←でも・・、正負判定の役割を★に移す。
- Tacosan
- ベストアンサー率23% (3656/15482)
「うまくいかない」というのは, 何がどう「うまくいかない」のですか? あなたがどのような動作を期待しているのか, そして実際の動作がどうであるのかをちゃんと書いてください.
補足
回答ありがとうございます。詳細が欠けていてすみません。 今の状態で実行しますと、例えば、 整数を入力 5 4 -8 合計は1です。 となります。そうではなくマイナスが出る前、すなわちここでは5と4の合計が出せるようにしたいというのが一点。 もう一点は5、4、ー8の横に例えば整数1、整数2、整数3のような個数を表示できるようしたいというものです。
お礼
回答ありがとうございます。 >「負の値」は、単にストッパーの役割 はい、そうです。今のままだと負の値も足してしまいますので。 breakを使うということはwhile文でなく、switch文で書くべきなのでしょうか。