追加!! Tiger^-^ 2006/06/21 02:51:19 ├こちらにまとめて回答します。 山中和義 2006/06/21 07:29:08 │└こんなものもどうでしょう? 中村 2006/06/21 09:32:54 │ ├"for文で"ということなので、それ以外の制御... 荒田浩二 2006/06/21 10:17:49 │ └すいません、バグ(?)がありました。 中村 2006/06/21 13:00:17 │ ├先コピーしかないしばらく暇なら実行しよう... Tiger^-^ 2006/06/21 13:52:37 │ └バグではないですよ。 荒田浩二 2006/06/21 14:21:39 │ └ご丁寧なコメントありがとうございます。ご... 中村 2006/06/22 09:05:40 └皆さんすごかったありがとうございます説明... Tiger^-^ 2006/06/21 11:44:24
追加!! Tiger^-^ 2006/06/21 02:51:19 ツリーへ
追加!! |
返事を書く |
Tiger^-^ 2006/06/21 02:51:19 | |
123 23 3 for文で どう書く?? |
├こちらにまとめて回答します。 山中和義 2006/06/21 07:29:08 ツリーへ
Re: 追加!! |
返事を書く |
山中和義 2006/06/21 07:29:08 | |
こちらにまとめて回答します。 FOR i=1 TO 3 !先頭の数字を指定する FOR J=i TO 3 !連番を表示する PRINT STR$(j); !数字を詰める NEXT J PRINT !改行 NEXT i FOR i=3 TO 1 STEP -1 FOR J=i TO 3 PRINT STR$(j); NEXT J NEXT i END |
│└こんなものもどうでしょう? 中村 2006/06/21 09:32:54 ツリーへ
Re: こちらにまとめて回答します。 |
返事を書く |
中村 2006/06/21 09:32:54 | |
こんなものもどうでしょう? (どちらも最初の数字を変更することで、123456789まではいけると思います。) REM 3->23->123 の場合 LET n = 3 ! 最初の数字(各桁の数字) LET Ans = 0 ! 答えの初期化 FOR i=1 to n LET Ans = Ans + n * 10^(i-1) PRINT Ans ! 答えの表示 LET n = n - 1 ! 次の桁の数字を準備 NEXT i REM 123->23->3 の場合 LET Ans = 123 ! 最初の数字(答えの初期化) REM 桁数を確認する(nを直接指定しても良い) LET n = 1 ! 桁数を初期化 DO WHILE INT(Ans/(10^n)) => 1 LET n = n + 1 LOOP REM 答えの表示ループ FOR i=n to 1 step -1 PRINT Ans ! 答えの表示 LET Ans = MOD(Ans, 10^(i-1)) !次の答えの準備 NEXT i END |
│ ├"for文で"ということなので、それ以外の制御... 荒田浩二 2006/06/21 10:17:49 ツリーへ
Re: こんなものもどうでしょう? |
返事を書く |
荒田浩二 2006/06/21 10:17:49 | |
"for文で"ということなので、それ以外の制御文を使わずに作ってみました。 ! 3 ! 23 ! 123 LET n=3 FOR i=n TO 1 STEP -1 LET a=0 FOR j=i TO n LET a=a+j*10^(n-j) NEXT j PRINT a NEXT i ! ! 123 ! 23 ! 3 LET n=3 FOR i=n TO 1 STEP -1 LET a=0 FOR j=i TO 1 STEP -1 LET a=a+(n-j+1)*10^(j-1) NEXT j PRINT a NEXT i END |
│ └すいません、バグ(?)がありました。 中村 2006/06/21 13:00:17 ツリーへ
Re: こんなものもどうでしょう? |
返事を書く |
中村 2006/06/21 13:00:17 | |
すいません、バグ(?)がありました。 念のため修正例をあげます。 LET n = 3 ! 最初の数字(各桁の数字) LET Ans = 0 ! 答えの初期化 LET ln = n ! ループ回数用にnを退避 FOR i=1 to ln LET Ans = Ans + n * 10^(i-1) PRINT Ans ! 答えの表示 LET n = n - 1 ! 次の桁の数字を準備 NEXT i |
│ ├先コピーしかないしばらく暇なら実行しよう... Tiger^-^ 2006/06/21 13:52:37 ツリーへ
Re: すいません、バグ(?)がありました。 |
返事を書く |
Tiger^-^ 2006/06/21 13:52:37 | |
先 コピーしかない しばらく 暇なら実行しようと思う バックがありますか?? |
│ └バグではないですよ。 荒田浩二 2006/06/21 14:21:39 ツリーへ
Re: すいません、バグ(?)がありました。 |
返事を書く |
荒田浩二 2006/06/21 14:21:39 | |
バグではないですよ。 最初の中村さんのプログラムを拝見したときは、 「i=2 のとき n=1 となり、ループを抜けるはずだが?」 と思ったのですが、十進BASICのヘルプで"FOR〜NEXT"の項目を見ると、 「限界,増分はFOR文が実行されたときに計算され,この構文の繰り返しを終了するまでその値が用いられる。」 とあります。 つまり、 「FOR文を1度実行してしまえば、FOR区内で限界や増分の数値式の値が変更されても、構文の制御には影響しない」 ということです。 次のプログラムは奇数を出力しますが、50行と60行はまったく影響を与えていません。 10 LET n=9 ! 限界 20 LET d=2 ! 増分 30 FOR i=1 TO n STEP d 40 PRINT i 50 LET n=n+2 ! 構文の制御には影響を与えない 60 LET d=d+3 ! 構文の制御には影響を与えない 70 NEXT i 80 END でも、初心者には理解しずらいことで、修正されたプログラムの方がはるかにわかりやすいと思います。 |
│ └ご丁寧なコメントありがとうございます。ご... 中村 2006/06/22 09:05:40 ツリーへ
Re: バグではないですよ。 |
返事を書く |
中村 2006/06/22 09:05:40 | |
ご丁寧なコメントありがとうございます。ご指摘の通り、読みにい(容易に理解できない)プログラムもバグの一種かなと思い(?)つきバグということで修正をあげました。 どちらのコードも問題なく実行できますが、ペーパデバッグなどでは多分最初のコードは混乱しますので。 |
└皆さんすごかったありがとうございます説明... Tiger^-^ 2006/06/21 11:44:24 ツリーへ
Re: 追加!! |
返事を書く |
Tiger^-^ 2006/06/21 11:44:24 | |
皆さん すごかった ありがとうございます 説明文もついていた 勉強になりました 礼!! |