みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ループと分岐について質問させてください。

n=1;
i=i+1;
a=i+n;
上記の式をループした場合、aは2,3,4…と増えていきます。もし、
aが50より大きくなった時、(a>50)
n=-1と変更して上記の計算を行い、aが50以下(a<50)となるまでn=-1で計算し、
aが50以下(a<50)となったらまたn=1に戻して上記の式を繰り返すプログラムを作成したいのですが、うまくいきません。一応下記に私の作成したプログラムを記載します。
ご指摘、ご指南いただければ幸いです。

for(i=0;i<=300;i++){
a=i+n;
if(a<50){
n=1;
}else if(a>50){
n=-1;
}

投稿日時 - 2009-05-04 17:13:35

QNo.4930763

すぐに回答ほしいです

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

プログラムを見る限り、
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を足す。
}

投稿日時 - 2009-05-04 17:33:26

お礼

ご回答ありがとうございます。
私の至らない質問文から質問内容を正確に把握していただきまことにありがとうございます。
#2の方のお礼文にも記載させていただいたのですが、m_goatさんがおっしゃるとおり、私はaを振動させたかったのです。
ココに掲載していただいたプログラムでaを振動させることが出来ました。
ご指導、ご指摘いただきありがとうございました。

投稿日時 - 2009-05-04 17:53:40

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

> もしよろしければご指導、ご指摘いただければと思います。

iを使わなければ解決します。

投稿日時 - 2009-05-04 19:32:48

お礼

たびたびのご指摘まことにありがとうございます。

投稿日時 - 2009-05-06 12:25:17

ANo.2

うまくいかないとは、
予想結果と実際とが食い違っている、
ということですか?

でしたら、どのように食い違っているか
教えてください。

投稿日時 - 2009-05-04 17:31:06

お礼

迅速な回答ありがとうございます。
私の結果予想では、aは48、49、50と増えて行き、a>50となった時、n=-1で計算する。
そうすれば、aは50から49と減る。そうするとa<50でnは再度n=1となり、aは49、50となる。この49、50、49、50を繰り返すことになるとの予想でしたが、結果は#1の方が指摘してくださったような結果となってしまいました。

投稿日時 - 2009-05-04 17:43:08

ANo.1

このプログラムは a<50まではaは増加しますが、
a=50になったらaはi>300まで変化しない仕組み
です。

投稿日時 - 2009-05-04 17:18:10

お礼

ご回答ありがとうございます。
私もプログラムを実行した時に、aが50を超えてから変化しないことに気付きました。
しかしながら、自身の勉強不足のため、a>50となった時にn=-1として計算し、a>50に戻った後nもn=1に再度戻して計算するようなプログラムの明確な作成方法が分からずにいます。
もしよろしければご指導、ご指摘いただければと思います。

投稿日時 - 2009-05-04 17:34:34

あなたにオススメの質問