2012年4月18日投稿 / 投稿者 : いったん / タグ : 投稿プログラム ツール QRコード mkII専用
524287を超えた演算をしてくれるプログラムです。
プログラムに組み込んだりして使ってください。
足し算と掛け算しかできませんが、できたら引き算などもこれから載せたいと思います。
バグなどありましたら連絡してください。
4/22
引き算とマイナスの符号を使えるようにしました。
プログラムリストに追加したところを青、消したところを灰色で書いてあります。
バグがありましたら連絡お願いします。
最初に演算子を選んでください。その後2つの数字(整数)を打ってください。
筆算のようにして解いています。なのでケタ数が多いと時間がかかります。
プチコンmkII 向けの QR コードです。
バージョン1
バージョン2 引き算と符号の認識ができるようになりました。
バージョン1と同じ名前なので上書き保存してください。
- ’Power up エンサ゛ンソフト by ittan
- ’-LOG-
- ’2012/04/19 ヒキサ゛ン ツイカ
- ’2012/04/22 フコ゛ウ テキヨウ
- VISIBLE 1,1,0,0,0,0
- CLEAR:CLS
- ’ヘンスウテイキ゛
- LMAX=30
- DIM K$(LMAX)
- ANS$=””
- L1=0:L2=0:L3=0:L4=0
- A$=””:B$=””:C$=””:D$=””
- A=0:B=0:C=0:E=0:F=0:G=0
- MA=0:MB=0
- @PUT
- ?”カケサ゛ン→0*
- ?”タシサ゛ン→1+
- ?”ヒキサ゛ン→-
- INPUT”エンサ゛ンシハ”;C$
- G=INSTR(”*+-”,C$)
- INPUT”ハシ゛メノスウシ゛ハ”;A$
- INPUT”ツキ゛ノスウシ゛ハ”;B$
- GOSUB @CHKMINUS
- MAX1=LEN(A$)
- MAX2=LEN(B$)
- IF G==1 OR G==2 THEN GOSUB@CHKTASI
- ON CG GOTO @KAKE,@TASI
- GOTO@PUT
- @KAKE
- FOR I=0 TO MAX2-1
- K$(I)=””
- FOR P=0 TO I-1
- K$(I)=K$(I)+”0”
- NEXT
- A=VAL(MID$(B$,MAX2-I-1,1))
- FOR J=0 TO MAX1-1
- B=VAL(MID$(A$,MAX1-J-1,1))
- C=A*B
- D=C%10
- E=(C-C%10)/10
- F=D+VAL(MID$(K$(I),J+I,1))
- IF F>=10 THEN E=E+1:F=F%10
- K$(I)=LEFT$(K$(I),J+I)
- K$(I)=K$(I)+STR$(F)+STR$(E)
- NEXT J
- NEXT I
- ANS$=””
- M1=MAX1+MAX2
- M2=MAX2
- FOR I=0 TO M1-1
- A=0
- FOR P=0 TO M2-1
- B=VAL(MID$(K$(P),I,1))
- A=A+B
- NEXT
- L1=0:L2=0:L3=0:L4=0
- L1=A%10+VAL(MID$(ANS$,I,1))
- IF L1>9 THEN L1=L1%10:L2=L2+1
- L2=L2+(A-A%10)/10
- L2=L2+VAL(MID$(ANS$,I+1,1))
- IF L2>9 THEN L2=L2%10:L3=L3+1
- L3=L3+(A-A%100)/100
- C$=STR$(L1)+STR$(L2)+STR$(L3)
- ANS$=MID$(ANS$,0,I)+C$
- NEXT
- H$=ANS$:ANS$=””
- L4=LEN(H$)
- FOR I=1 TO L4
- ANS$=ANS$+MID$(H$,L4-I,1)
- NEXT
- @A
- IF MID$(ANS$,0,1)==”0” THEN ANS$=MID$(ANS$,1,LEN(ANS$)-1):GOTO@A
- IF ANS$==”” THEN ANS$=”0”
- IF MA!=MB THEN ANS$=”-”+ANS$
- ?ANS$
- GOTO@PUT
- @TASI
- A=MAX1
- C$=””
- IF A<MAX2 THEN A=MAX2
- A$=RIGHT$(”0”*32+A$,A)
- B$=RIGHT$(”0”*32+B$,A)
- FOR I=A TO 1 STEP -1
- A=VAL(MID$(A$,I-1,1))
- B=VAL(MID$(B$,I-1,1))
- E=VAL(LEFT$(C$,1))
- C=A+B+E
- D$=RIGHT$(”0”+STR$(C),2)
- C$=D$+RIGHT$(C$,LEN(C$)-1+(C$==””))
- NEXT
- ANS$=C$
- @B
- IF LEFT$(ANS$,1)==”0” THEN ANS$=RIGHT$(ANS$,LEN(ANS$)-1):GOTO@B
- IF MA==1 AND MB==1 THEN ANS$=”-”+ANS$
- ?ANS$
- GOTO@PUT
- @HIKI
- A=MAX1
- C$=A$:ANS$=””
- IF A<MAX2 THEN A=MAX2
- A$=RIGHT$(”0”*(LMAX-MAX1)+A$,A)
- B$=RIGHT$(”0”*(LMAX-MAX2)+B$,A)
- FOR I=A TO 1 STEP -1
- A=VAL(MID$(A$,I-1,1))
- B=VAL(MID$(B$,I-1,1))
- C=A-B
- IF C<0 THEN GOSUB @KURISAGARI
- ANS$=STR$(C)+ANS$
- NEXT
- IF F==TRUE THEN F=FALSE:G=TRUE:GOTO@HIKI
- @C
- IF LEFT$(ANS$,1)==”0” THEN ANS$=RIGHT$(ANS$,LEN(ANS$)-1):GOTO@C
- IF ANS$==”” THEN ANS$=”0”
- IF G==TRUE THEN ANS$=”-”+ANS$:G=0
- ?ANS$
- GOTO@PUT
- @KURISAGARI
- L=I-1
- IF L==0 THEN F=TRUE:GOTO@FTRUE
- F=FALSE
- @KLOOP
- D=VAL(MID$(A$,L-1,1))
- IF D!=0 THEN A$=SUBST$(A$,L-1,1,STR$(D-1)):GOTO@EXIT
- A$=SUBST$(A$,L-1,1,”9”)
- IF L==1 THEN F=TRUE:GOTO@FTRUE
- L=L-1
- GOTO@KLOOP
- @FTRUE
- I=0
- A$=B$
- B$=C$
- SWAP MAX1,MAX2
- @EXIT
- A=A+10
- C=A-B
- RETURN
- @CHKMINUS
- C=CANCEL:D=CANCEL
- C$=LEFT$(A$,1)
- D$=LEFT$(B$,1)
- C=INSTR(”+-”,C$)
- D=INSTR(”+-”,D$)
- MA=(C==1)
- MB=(D==1)
- IF C==-1 AND D==-1 THEN RETURN
- A$=RIGHT$(A$,LEN(A$)-(C>=0))
- B$=RIGHT$(B$,LEN(B$)-(D>=0))
- RETURN
- @CHKTASI
- IF G==2 THEN MB=!MB
- IF MA==MB THEN G=1:RETURN
- IF MB==1 THEN G=2:MB=0:RETURN
- SWAP A$,B$
- SWAP MAX1,MAX2
- MA=0
- G=2
- RETURN
この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)