- ベストアンサー
ループと分岐について質問させてください
- ループと分岐について質問させてください。上記の式をループした場合、aは2,3,4…と増えていきます。もし、aが50より大きくなった時、n=-1と変更して上記の計算を行い、aが50以下(a<50)となるまでn=-1で計算し、aが50以下(a<50)となったらまたn=1に戻して上記の式を繰り返すプログラムを作成したいのですが、うまくいきません。
- ループと分岐に関する質問です。上記の計算式をループさせると、aの値は2から始まり、増え続けます。しかし、aが50を超えると、nの値を-1に変更し、再び計算を行い、aが50以下になるまで-1で計算します。そして、aが50以下になったら、nの値を1に戻して再び計算を繰り返すプログラムを作成したいのですが、うまくいきません。
- ループと分岐について質問です。上記の計算式をループさせると、aは2から始まり、増加していきます。しかし、aが50を超えると、nの値を-1に変更し、再び計算を行い、aが50以下になるまで-1で計算します。そして、aが50以下になったら、nの値を1に戻して再び計算を繰り返すプログラムを作成したいのですが、うまくいきません。ご指摘、ご指南いただければ幸いです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
プログラムを見る限り、 i<50のとき、a=i+1 i=50のとき、a=i+1 i>50のとき、a=i-1 と表示されるはずです。 プログラムを回し終わったとき、a=299となってはいませんか? もしaが振動するようにしたいのでしたら、 以下のように書くことでできると思います。 a=0; aの初期値を設定 for(i=0;i<=300;i++){ 条件分岐 if(a<50){ n=1; }else if(a>50){ n=-1; } a=a+n; 前回のaにnを足す。 }
その他の回答 (3)
- Tasuke22
- ベストアンサー率33% (1799/5383)
> もしよろしければご指導、ご指摘いただければと思います。 iを使わなければ解決します。
お礼
たびたびのご指摘まことにありがとうございます。
- asuncion
- ベストアンサー率33% (2127/6289)
うまくいかないとは、 予想結果と実際とが食い違っている、 ということですか? でしたら、どのように食い違っているか 教えてください。
お礼
迅速な回答ありがとうございます。 私の結果予想では、aは48、49、50と増えて行き、a>50となった時、n=-1で計算する。 そうすれば、aは50から49と減る。そうするとa<50でnは再度n=1となり、aは49、50となる。この49、50、49、50を繰り返すことになるとの予想でしたが、結果は#1の方が指摘してくださったような結果となってしまいました。
- Tasuke22
- ベストアンサー率33% (1799/5383)
このプログラムは a<50まではaは増加しますが、 a=50になったらaはi>300まで変化しない仕組み です。
お礼
ご回答ありがとうございます。 私もプログラムを実行した時に、aが50を超えてから変化しないことに気付きました。 しかしながら、自身の勉強不足のため、a>50となった時にn=-1として計算し、a>50に戻った後nもn=1に再度戻して計算するようなプログラムの明確な作成方法が分からずにいます。 もしよろしければご指導、ご指摘いただければと思います。
お礼
ご回答ありがとうございます。 私の至らない質問文から質問内容を正確に把握していただきまことにありがとうございます。 #2の方のお礼文にも記載させていただいたのですが、m_goatさんがおっしゃるとおり、私はaを振動させたかったのです。 ココに掲載していただいたプログラムでaを振動させることが出来ました。 ご指導、ご指摘いただきありがとうございました。