- 締切済み
このプログラムで計算を実行すると・・・
10:S=0 20:FOR I=0 TO 6 STEP 2 30:FOR L=0 TO I 40:S=S+L 50:NEXT I 60:NEXT L 70:PRINT S 80:END 90: このプログラムを実行すると、「34」とプログラムの計算結果が表示されるのですが、実際に自分で計算すると「22」になってしまいます。 どこが違うのとか・・・基本的なとこが間違ってるのか? あとプログラムの動きを解説して頂けるとうれしいです! それでは、お願い致します。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- kony0
- ベストアンサー率36% (175/474)
プログラムの動きがみたいのであれば、 45:PRINT I;L;S を追加してみてはどうでしょうか? (#3さんはきっとそうされています。)
- Tattoko
- ベストアンサー率17% (3/17)
本題についての回答がまだついていないですね。 [50]行と[60]行が逆であるとして考えると、この プログラムはS(初期値は0)に「0から I までを 順に足す」ことを I を0,2,4,6と変化させておこなう ことになります。つまり、 0+(0)+(0+1+2)+(0+1+2+3+4)+(0+1+2+3+4+5+6) の答えがSに代入されることになるので、34が 表示されます。 念のために付け加えておくと、 FOR I=0 TO 6 STEP 2 ... NEXT I は I=0から2ずつ増加させて6になるまで繰り返す (6を超えてしまったら実行しない)ということです。 つまり、I=0,I=2,I=4,I=6の4回実行されます。 そして、 FOR L=0 TO I ... NEXT L は L=0から(1ずつ増加させて) I になるまで繰り返す ということです。
- wogota
- ベストアンサー率42% (66/154)
>このプログラムで、20行目のI=0 TO 6 STEP 2 で、0,6,2の >値を入力して変化させれる様にするにはどうしたらいいのでしょうか? 追加する形式で書くと 10:S=0 11:INPUT "START=";A 12:INPUT "END=";B 13:INPUT "STEP=";C 14:IF A>B THEN PRINT "ERROR!!": GOTO 11 20:REM FOR I=0 TO 6 STEP 2 21:FOR I=A TO B STEP C 30:FOR L=0 TO I 40:S=S+L 50:NEXT L 60:NEXT I 70:PRINT S 80:END となると思いますが。 (ただし、INPUT文にプロンプトが設定できない系の場合は、 "PRINT "START=";:INPUT A"といった形になると思います。)
- arup
- ベストアンサー率0% (0/0)
>値を入力して変化させれる用にするにはどうしたらいいのでしょうか? 2:input a 4:input b 6:input c 10:S=0 20:FOR I=a TO b STEP c 30:FOR L=0 TO I 40:S=S+L 50:NEXT L 60:NEXT I 70:PRINT S 80:END
- teo98
- ベストアンサー率23% (70/303)
各変数の動きを順番に書き出してみました。 I,L,S 0,0,0 2,0,0 2,1,1 2,2,3 4,0,3 4,1,4 4,2,6 4,3,9 4,4,13 6,0,13 6,1,14 6,2,16 6,3,19 6,4,23 6,5,28 6,6,34
- h_narunaru
- ベストアンサー率25% (47/183)
エラーになりませんか? NEXTが逆ですネ 10:S=0 20:FOR I=0 TO 6 STEP 2 30:FOR L=0 TO I 40:S=S+L 50:NEXT L 60:NEXT I 70:PRINT S 80:END 50と60が逆です
補足
10:S=0 20:FOR I=0 TO 6 STEP 2 30:FOR L=0 TO I 40:S=S+L 50:NEXT L 60:NEXT I 70:PRINT S 80:END このプログラムで、20行目のI=0 TO 6 STEP 2 で、0,6,2の 値を入力して変化させれる用にするにはどうしたらいいのでしょうか?
- mokonoko
- ベストアンサー率33% (969/2859)
NEXT文が対で閉じられていないのですが・・ 50行はNEXT L 60行はNEXT I ではないのですか?
補足
10:S=0 20:FOR I=0 TO 6 STEP 2 30:FOR L=0 TO I 40:S=S+L 50:NEXT L 60:NEXT I 70:PRINT S 80:END このプログラムで、20行目のI=0 TO 6 STEP 2 で、0,6,2の 値を入力して変化させれる用にするにはどうしたらいいのでしょうか?
補足
10:S=0 20:FOR I=0 TO 6 STEP 2 30:FOR L=0 TO I 40:S=S+L 50:NEXT L 60:NEXT I 70:PRINT S 80:END このプログラムで、20行目のI=0 TO 6 STEP 2 で、0,6,2の 値を入力して変化させれる用にするにはどうしたらいいのでしょうか?