新しく発言する EXIT インデックスへ
追加!!

  追加!! 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



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
PRINT
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
皆さん すごかった ありがとうございます 説明文もついていた 勉強になりました  礼!!


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。