こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

小町算のプログラムについて

小町算のプログラムについて

100 DIM s(9)
110 FOR i=1 TO 9
120 LET s(i)=-1
130 NEXT i
140 DO
150 LET sum=0
160 LET num=0
170 LET sign=1
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
270 LET sum=sum+sign*num
280 IF sum=100 THEN
290 FOR i=1 TO 9
300 IF s(i)= +1 THEN PRINT " + ";
310 IF s(i)= -1 THEN PRINT " - ";
320 PRINT i;
330 NEXT i
340 PRINT " = 100"
350 END IF
360 LET i=9
370 LET sign=s(i)+1
380 DO WHILE ( sign > 1 )
390 LET s(i)=-1
400 LET i=i-1
410 LET sign=s(i)+1
420 LOOP
430 LET s(i)=sign
440 LOOP WHILE ( s(1) < 1)
450 END

というものですが、このプログラム中にあるsum、num、signとはどういう意味があるのでしょうか?

投稿日時 - 2010-06-13 00:02:07

QNo.5964390

困ってます

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

カテゴリ違いだと思われます。
* 教えて!goo >
* [技術者向] コンピューター >
* プログラミング >
* その他(プログラミング)
でお尋ねになったほうがよろしいかと。

投稿日時 - 2010-06-13 09:21:50

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

小町算とは
1+2+34-5+67-8+9=100
のように1から9を順序は変えずに適宜並べてその計算結果が100になるように
するもので和算の遊びみたいなものでしょう。
+、-だけでなくて×、÷を混ぜてもよいなどのバリエーションがあります。
sum=sum+sign*num
という式が多く用いられていますが、numという正の整数を変化させて正負をsignで選択し
これをsumに足しこんでsumが100になったらprint outするというプログラムになっています。
450 end
の前にstopを入れないと結果が見れませんので、念のため。

投稿日時 - 2010-06-13 12:31:02

ANo.2

私には「小町算」がどういうものかがわかりません。
したがってプログラムの意味も分かりません。

sum、num、signはこのプログラムを作った人が変数名として使っているものです。
関数名ではありません。変数名をどういう文字で表すかは作った人の好みです。

sum は和、num は数 の意味でしょう。
私は単にS,Nで表します。
signは符号の意味だろうと思いますが sign>1 というような式が出てきていることで言うと符号ではないような気もします。
SGNという符号関数もありますから混乱しそうですね。

LETが多くて見にくいですね。
BASICのプログラムではLETはふつう省略できると思います。

投稿日時 - 2010-06-13 09:47:09

あなたにオススメの質問