• 締切済み

このプログラムで計算を実行すると・・・

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」になってしまいます。 どこが違うのとか・・・基本的なとこが間違ってるのか? あとプログラムの動きを解説して頂けるとうれしいです! それでは、お願い致します。

みんなの回答

  • kony0
  • ベストアンサー率36% (175/474)
回答No.7

プログラムの動きがみたいのであれば、 45:PRINT I;L;S を追加してみてはどうでしょうか? (#3さんはきっとそうされています。)

  • Tattoko
  • ベストアンサー率17% (3/17)
回答No.6

 本題についての回答がまだついていないですね。 [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)
回答No.5

>このプログラムで、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)
回答No.4

>値を入力して変化させれる用にするにはどうしたらいいのでしょうか? 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)
回答No.3

各変数の動きを順番に書き出してみました。 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

mayumih
質問者

補足

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の 値を入力して変化させれる用にするにはどうしたらいいのでしょうか?

回答No.2

エラーになりませんか? 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が逆です

mayumih
質問者

補足

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)
回答No.1

NEXT文が対で閉じられていないのですが・・ 50行はNEXT L 60行はNEXT I ではないのですか?

mayumih
質問者

補足

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の 値を入力して変化させれる用にするにはどうしたらいいのでしょうか?