プチコンまとめWiki (初代/mkII)

投稿プログラム : パワーアップ演算ソフト

2012年4月18日投稿 / 投稿者 : いったん / タグ : 投稿プログラム ツール QRコード mkII専用

概要

524287を超えた演算をしてくれるプログラムです。

プログラムに組み込んだりして使ってください。

足し算と掛け算しかできませんが、できたら引き算などもこれから載せたいと思います。

バグなどありましたら連絡してください。

更新履歴 

4/22
引き算とマイナスの符号を使えるようにしました。
プログラムリストに追加したところを青、消したところを灰色で書いてあります。
バグがありましたら連絡お願いします。

使い方

最初に演算子を選んでください。その後2つの数字(整数)を打ってください。

解説

筆算のようにして解いています。なのでケタ数が多いと時間がかかります。

QR コード

プチコンmkII 向けの QR コードです。

バージョン1

PRG:OPRTION
1/22/2
qr0.PNGqr1.PNG

バージョン2 引き算と符号の認識ができるようになりました。
バージョン1と同じ名前なので上書き保存してください。

PRG:OPRTION
1/22/2
qr0_2.PNGqr1_2.PNG

プログラムリスト

  1. ’Power up エンサ゛ンソフト by ittan
  2. ’−LOG−
  3. ’2012/04/19 ヒキサ゛ン ツイカ
  4. ’2012/04/22 フコ゛ウ テキヨウ
  5. VISIBLE 1,1,0,0,0,0
  6. CLEAR:CLS
  7. ’ヘンスウテイキ゛
  8. LMAX=30
  9. DIM K$(LMAX)
  10. ANS$=””
  11. L1=0:L2=0:L3=0:L4=0
  12. A$=””:B$=””:C$=””:D$=””
  13. A=0:B=0:C=0:E=0:F=0:G=0
  14. MA=0:MB=0
  15. @PUT
  16. ?”カケサ゛ン→
  17. ?”タシサ゛ン→
  18. ?”ヒキサ゛ン→−
  19. INPUT”エンサ゛ンシハ”;C
  20. G=INSTR(”*+−”,C$)
  21. INPUT”ハシ゛メノスウシ゛ハ”;A$
  22. INPUT”ツキ゛ノスウシ゛ハ”;B$
  23. GOSUB @CHKMINUS
  24. MAX1=LEN(A$)
  25. MAX2=LEN(B$)
  26. IF G==1 OR G==2 THEN GOSUB@CHKTASI
  27. ON  GOTO @KAKE,@TASI
  28. GOTO@PUT
  29. @KAKE
  30. FOR I=0 TO MAX2−1
  31. K$(I)=””
  32.  FOR P=0 TO I−1
  33.   K$(I)=K$(I)+”0”
  34.  NEXT
  35.  A=VAL(MID$(B$,MAX2−I−1,1))
  36.  FOR J=0 TO MAX1−1
  37.   B=VAL(MID$(A$,MAX1−J−1,1))
  38.   C=A*B
  39.   D=C%10
  40.   E=(C−C%10)/10
  41.   F=D+VAL(MID$(K$(I),J+I,1))
  42.   IF F>=10 THEN E=E+1:F=F%10
  43.   K$(I)=LEFT$(K$(I),J+I)
  44.   K$(I)=K$(I)+STR$(F)+STR$(E)
  45.  NEXT J
  46. NEXT I
  47. ANS$=””
  48. M1=MAX1+MAX2
  49. M2=MAX2
  50. FOR I=0 TO M1−1
  51.  A=0
  52.  FOR P=0 TO M2−1
  53.   B=VAL(MID$(K$(P),I,1))
  54.   A=A+B
  55.  NEXT
  56.  L1=0:L2=0:L3=0:L4=0
  57.  L1=A%10+VAL(MID$(ANS$,I,1))
  58.  IF L1>9 THEN L1=L1%10:L2=L2+1
  59.  L2=L2+(A−A%10)/10
  60.  L2=L2+VAL(MID$(ANS$,I+1,1))
  61.  IF L2>9 THEN L2=L2%10:L3=L3+1
  62.  L3=L3+(A−A%100)/100
  63.  C$=STR$(L1)+STR$(L2)+STR$(L3)
  64.  ANS$=MID$(ANS$,0,I)+C$
  65. NEXT
  66. H$=ANS$:ANS$=””
  67. L4=LEN(H$)
  68. FOR I=1 TO L4
  69.  ANS$=ANS$+MID$(H$,L4−I,1)
  70. NEXT
  71. @A
  72. IF MID$(ANS$,0,1)==”0” THEN ANS$=MID$(ANS$,1,LEN(ANS$)−1):GOTO@A
  73. IF ANS$==”” THEN ANS$=”0”
  74. IF MA!=MB THEN ANS$=”−”+ANS$
  75. ?ANS$
  76. GOTO@PUT
  77. @TASI
  78. A=MAX1
  79. C$=””
  80. IF A<MAX2 THEN A=MAX2
  81. A$=RIGHT$(”0”*32+A$,A)
  82. B$=RIGHT$(”0”*32+B$,A)
  83. FOR I=A TO 1 STEP −1
  84.  A=VAL(MID$(A$,I−1,1))
  85.  B=VAL(MID$(B$,I−1,1))
  86.  E=VAL(LEFT$(C$,1))
  87.  C=A+B+E
  88.  D$=RIGHT$(”0”+STR$(C),2)
  89.  C$=D$+RIGHT$(C$,LEN(C$)−1+(C$==””))
  90. NEXT
  91. ANS$=C$
  92. @B
  93. IF LEFT$(ANS$,1)==”0” THEN ANS$=RIGHT$(ANS$,LEN(ANS$)−1):GOTO@B
  94. IF MA==1 AND MB==1 THEN ANS$=”−”+ANS$
  95. ?ANS$
  96. GOTO@PUT
  97. @HIKI
  98. A=MAX1
  99. C$=A$:ANS$=””
  100. IF A<MAX2 THEN A=MAX2
  101. A$=RIGHT$(”0”*(LMAX−MAX1)+A$,A)
  102. B$=RIGHT$(”0”*(LMAX−MAX2)+B$,A)
  103. FOR I=A TO 1 STEP −1
  104.  A=VAL(MID$(A$,I−1,1))
  105.  B=VAL(MID$(B$,I−1,1))
  106.  C=A−B
  107.  IF C<0 THEN GOSUB @KURISAGARI
  108.  ANS$=STR$(C)+ANS$
  109. NEXT
  110. IF F==TRUE THEN F=FALSE:G=TRUE:GOTO@HIKI
  111. @C
  112. IF LEFT$(ANS$,1)==”0” THEN ANS$=RIGHT$(ANS$,LEN(ANS$)−1):GOTO@C
  113. IF ANS$==”” THEN ANS$=”0”
  114. IF G==TRUE THEN ANS$=”−”+ANS$:G=0
  115. ?ANS$
  116. GOTO@PUT
  117. @KURISAGARI
  118. L=I−1
  119. IF L==0 THEN F=TRUE:GOTO@FTRUE
  120. F=FALSE
  121. @KLOOP
  122. D=VAL(MID$(A$,L−1,1))
  123. IF D!=0 THEN A$=SUBST$(A$,L−1,1,STR$(D−1)):GOTO@EXIT
  124. A$=SUBST$(A$,L−1,1,”9”)
  125. IF L==1 THEN F=TRUE:GOTO@FTRUE
  126. L=L−1
  127. GOTO@KLOOP
  128. @FTRUE
  129. I=0
  130. A$=B$
  131. B$=C$
  132. SWAP MAX1,MAX2
  133. @EXIT
  134. A=A+10
  135. C=A−B
  136. RETURN
  137. @CHKMINUS
  138. C=CANCEL:D=CANCEL
  139. C$=LEFT$(A$,1)
  140. D$=LEFT$(B$,1)
  141. C=INSTR(”+−”,C$)
  142. D=INSTR(”+−”,D$)
  143. MA=(C==1)
  144. MB=(D==1)
  145. IF C==−1 AND D==−1 THEN RETURN
  146. A$=RIGHT$(A$,LEN(A$)−(C>=0))
  147. B$=RIGHT$(B$,LEN(B$)−(D>=0))
  148. RETURN
  149. @CHKTASI
  150. IF G==2 THEN MB=!MB
  151. IF MA==MB THEN G=1:RETURN
  152. IF MB==1 THEN G=2:MB=0:RETURN
  153. SWAP A$,B$
  154. SWAP MAX1,MAX2
  155. MA=0
  156. G=2
  157. RETURN

CHECKER FLAG (ひとことコメント)

この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)

  • 名無しさん : いつかこういうプログラムを作ろうと思ってたら先を越されたw (2012/04/18 (水) 15:49:16)
  • hatena : 表がおかしいので直しましたよ。 (2012/04/18 (水) 20:24:10)
  • 名無しさん : 9が32個*9が32個=SUBSCRIPT OUT OF RANGE(26) (2012/04/19 (木) 16:48:26)
  • 名無しさん : これって多倍長演算? (2012/04/19 (木) 18:56:20)
  • 投稿者 : ↑↑LMAXのところを大きくすればできますよ。 (2012/04/20 (金) 17:59:59)
  • 名無しさん : ↑ありがとうございます!&dasic} (2012/05/19 (土) 15:10:13)
  • 名無しさん : sankyou アリカ゛トウ! (2012/05/19 (土) 15:10:53)
  • 名無しさん : SANK YOU アリカ゛トウコ゛サ゛イマス。 (2012/05/19 (土) 15:12:02)
  • 名無しさん : Thank you では? (2012/05/19 (土) 18:44:22)
  • 名無しさん : おっ良いのハケーン (2012/05/19 (土) 18:48:47)

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.047 秒 | このページの最終更新 : 2012/05/19 (土) 18:48:47 (2618d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30