• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:十進BASICのプログラムについて)

十進BASICのプログラムについて

このQ&Aのポイント
  • 十進BASICのプログラムについて説明します。プログラムは小町算と呼ばれるもので、配列sを初期化し、繰り返し処理で数式を計算しています。
  • プログラム中で使用されている変数sumは、計算結果の合計値を表しています。numは数値の一部を表し、signは正負を表しています。
  • 具体的には、配列sの要素が0でない場合にsumにnumを加算し、符号をsignにセットしています。numが10未満の場合は、値をnumにセットしています。最後にsumが100と等しい場合に結果を出力しています。

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

  • ベストアンサー
回答No.1

説明が難しいなあ…伝わる気がしない 配列sに数値が入った状態をイメージする +が1で 何も無い時が0 -が-1だ。 例として 1 2 - 3 - 4 + 5 - 6 + 7 + 8 9 の時、どんな値が入っているかというと 12 s(1) = 0 s(2) = 0 -3 s(3) = -1 -4 s(4) = -1 +5 s(5) = 1 - 6 s(6) = -1 +7 s(7) = 1 +89 s(8) = 1 s(9) = 0 でs(1)からs(9)までチェックする 180 FOR i=1 TO 9 190 IF s(i)<>0 THEN 200 LET sum=sum+sign*num 210 LET sign=s(i) 220 LET num=i 230 ELSE 240 LET num=10*num+i 250 END IF 260 NEXT i ===========結局のところ、i = 3まではこういう道筋を通ったと言って良い。 LET sign=1 FOR i=1 TO 2 LET num=10*num+i NEXT i REM numは12,signは1 sum は 0 REM numは次の符号が出てくるまでの数の絶対値を作るために貯めておく場所で REM signはその数値の符号。 REM sumは今までの計算結果。以下、これまでの数値に、signとnumの積を足している。その時、次の数値の符号をsignに代入している FOR i=3 TO 3 LET sum=sum+sign*num LET sign=s(i) LET num=i NEXT i 360-420行目は次のsの組み合わせを求めるためにくり上がりをやっているんだけど、 3進数の代わりに、-1 0 1でやっているから余計に分かりにくくなっている気がする

yamaky5610
質問者

お礼

ありがとうございました。 がんばって理解してみます。

関連するQ&A