home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 34 / 64er_Magazin_Sonderheft_34_19xx_Markt__Technik_de_Disk_2_of_2_Side_A.d64 / bruchrechnen (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  7KB  |  188 lines

  1. 10 forx=0to29:read y:poke49152+x,y:nextx
  2. 15 rem maschinenprogramm fuer syspr
  3. 20 print"[147]":pr=49152:x=0:goto130
  4. 25 rem bldschrm loeschen, bestimmung vonpr, sprung ueber unterroutinen
  5. 30 syspr,ze,sp,"falsch":fa=fa+1:fori=1to500:nexti
  6. 35 rem unterprogramm falscheingabe
  7. 40 syspr,ze,sp,"       ":return
  8. 50 fori=1tol:syspr,9,1,chr$(148):forx=1to10:nextx
  9. 55 rem unterprogramm fuer verschiebung nach rechts
  10. 60 syspr,10,1,chr$(148):forx=1to10:nextx
  11. 70 syspr,11,1,chr$(148):forx=1to8:nextx:nexti
  12. 80 return
  13. 90 fori=1tol:syspr,09,1,chr$(20):forx=1to10:nextx
  14. 95 rem unterprogramm fuer verschiebung nach links
  15. 100 syspr,10,1,chr$(20):forx=1to10:nextx
  16. 110 syspr,11,1,chr$(20):forx=1to8:nextx:nexti:poke1424,32
  17. 120 return
  18. 130 fori=1to20:forx=1to100:nextx:syspr,10,10,"bruchrechnen"
  19. 135 rem anfangsblds.vielleicht nicht noetig jedoch konzentrationsvorbereitung
  20. 140 syspr,12,10,"fuer carolin"
  21. 150 syspr,14,9,"von ihrem papa"
  22. 160 forx=1to100:nextx
  23. 165 rem hier kann der fantasie freien lauf gelassen werden
  24. 170 syspr,12,10,"             ":nexti
  25. 180 for az=1to10:ti$="000000":r$=chr$(43):ifaz>5thenr$=chr$(45)
  26. 182 rem uhr auf null stellen
  27. 185 rem az=anzahl der durchgaenge, r$ fuer + oder - nach 5 durchlaeufen
  28. 190 a=int(rnd(0)*10):ifa=1ora=0then190
  29. 195 rem bestimmung des ersten nenners, uninteressant wenn 1 oder null
  30. 200 fori=1to a:nexti:b=int(rnd(0)*10):ifb=0orb=1then200
  31. 205 rem bestimmung des 2. nenners
  32. 210 fori=1toa:c=int(rnd(0)*10):ifc=0then210
  33. 215 rem bestimmung des ersten zaehlers, kann auch eins sein
  34. 220 fori=1toa:d=int(rnd(0)*10):ifd=0then220
  35. 225 rem bestimmung des 2. zaehlers
  36. 230 ifa=cthen190
  37. 235 rem wenn nenner gleich zaehler uninteressant
  38. 240 ifb=dthen190
  39. 245 rem das gleiche
  40. 250 ifa=bthen190
  41. 255 rem wenn beide nenner gleich uninteressant
  42. 260 ifaz>5and(c/a)<(d/b)then190
  43. 265 rem nur bei - ergebnis wird kuerzen schwierig, wer kann das loesen?
  44. 266 rem in den zeilen ab 860 koennte entsprechende routine eingebaut werden
  45. 270 print"[147]":syspr,3,12,"bruchrechnen[154]"
  46. 275 rem arbeitsbildschirm
  47. 280 syspr,10,3,"[192][192][192][192][192] ";r$;" [192][192][192][192][192]  ="
  48. 285 rem ausgabe der bruchstriche und des rechenzeichen
  49. 290 syspr,10,21,"[192][192][192][192][192] ";r$;" [192][192][192][192][192]"
  50. 295 rem ausgabe des arbeisbruchstriches
  51. 300 syspr,9,4,c
  52. 305 rem ausgabe der zahlen
  53. 310 syspr,9,12,d
  54. 320 syspr,11,4,a
  55. 330 syspr,11,12,b
  56. 340 f=0:y=0
  57. 345 rem zurueckstellen der variablen
  58. 350 f=f+b:y=y+1:x=f/a:z=int(x+0.5):ifx=zthen370
  59. 355 rem bestimmung des hauptnenners, auf diesem weg wird der niedrigste genommen
  60. 360 goto 350
  61. 365 rem falls bedingung x=0 nochmaliger durchlauf
  62. 370 n=0
  63. 380 poke214,11:poke211,21:sys58640:inputn
  64. 385 rem abfrage des hauptnenners
  65. 390 ifn<>fthenze=11:sp=20:gosub 30:goto380
  66. 395 rem falls unrichtige antwort
  67. 400 syspr,11,20,"     ":syspr,11,22,f:syspr,11,30,f
  68. 405 rem wenn richtig ausgabe des hauptnenners
  69. 410 poke214,9:poke211,21:sys58640:inputn
  70. 415 rem abfrage des 1. zaehlers
  71. 420 ifn<>f/a*cthen ze=9:sp=20:gosub 30:goto 410
  72. 425 rem ueberpruefung und fals falsch
  73. 440 syspr,9,20,"     ":syspr,9,22,n
  74. 445 rem antwort richtig und ausgabe
  75. 450 poke214,9:poke211,29:sys58640:inputn
  76. 455 rem abfrage des 2. zaehlers
  77. 460 ifn<>y*dthen ze=9:sp=29:gosub 30:goto 450
  78. 465 rem ueberpruefung des 2. zaehlers und fals falsch fehlermeldung
  79. 470 syspr,9,27,"        ":syspr,9,30,n
  80. 475 rem antwort richtig und ausgabe
  81. 480 l=18:gosub90:l=0
  82. 485 rem rechnung nach links wegscrollen
  83. 490 syspr,10,17,"= [192][192][192][192][192][192]":syspr,11,19,f
  84. 495 rem ausgabe des naechsten arbeitsbruchstriches und hauptnenners
  85. 500 poke214,9:poke211,18:sys58640:inputn
  86. 505 rem eingabe des gemeinsamen zaehlers
  87. 510 ifr$=chr$(43)then goto 950
  88. 515 rem sprung in unterroutine +
  89. 520 ifn=f/a*c-y*dthen540
  90. 525 rem wenn richtig dann weiter
  91. 530 ze=9:sp=17:gosub30:goto500
  92. 535 rem wenn falsch
  93. 540 syspr,9,18,"        ":syspr,9,19,n
  94. 550 l=18:gosub90:l=8:gosub50:l=0
  95. 555 rem verschieben
  96. 560 z=n:g=n:e=f
  97. 570 r=g-int(g/e)*e:g=e:e=r:ifr>0then570
  98. 575 rem kann man kuerzen? wenn nicht ueber kuerzroutine springen
  99. 580 za=z/g:ne=f/g
  100. 585 rem bestimmung von zaehler und nenner
  101. 590 poke214,14:poke211,5:sys58640:input"kann man kuerzen (j/n)";f$
  102. 600 iff$=chr$(74)orf$=chr$(78)then620
  103. 605 rem falls eine andere antwort mit folgender zeile richtige antwort erzwingen
  104. 610 goto 590
  105. 620 if f$=chr$(74)andg>1then680
  106. 630 if f$=chr$(74)andg=1then660
  107. 640 if f$=chr$(78)andg>1then660
  108. 650 if f$=chr$(78)andg=1then fori=1to300:nexti:goto810
  109. 655 rem entsprechend der antwort und richtigkeit verzweigen
  110. 660 syspr,14,5,"du hast dich geirrt!       ":fori=1to600:nexti:fa=fa+1
  111. 670 syspr,14,5,"                    ":goto 590
  112. 675 rem unrichtige antwort
  113. 680 syspr,14,5,"                           "
  114. 685 rem richtige antwort, loeschen der frage
  115. 690 poke214,14:poke211,5:sys58640:input"mit welchem wert";w
  116. 695 rem abfrage welcher wert genommen werden kann
  117. 700 if w=g then730
  118. 705 rem richtige antwort
  119. 710 syspr,14,5,"es gibt einen besseren!":fori=1to500:nexti:fa=fa+1
  120. 715 rem falsche antwort
  121. 720 syspr,14,5,"                          ":goto 680
  122. 725 rem loeschen und neuabfrage
  123. 730 syspr,10,14," = [192][192][192][192][192]"
  124. 735 rem ausgabe des naechsten bruchstriches
  125. 740 syspr,14,5,"                    "
  126. 745 rem loeschen der frage
  127. 750 poke214,9:poke211,17:sys58640:inputn:ifn=zathen 770
  128. 755 rem abfrage des zaelers. wenn richtig sprung
  129. 760 syspr,9,16,"falsch":fori=1to200:nexti:syspr,9,16,"      ":goto750
  130. 765 rem antwort falsch
  131. 770 syspr,9,16,"      ":syspr,9,18,n
  132. 780 poke214,11:poke211,17:sys58640:inputn:ifn=ne then800
  133. 785 rem abfrage des nenners. wenn richtig sprung
  134. 790 ze=11:sp=16:gosub 30:goto780
  135. 795 rem antwort falsch
  136. 800 syspr,11,16,"    ":syspr,11,18,n
  137. 805 rem ausgabe des richtigen nenners
  138. 810 g=int(za/ne):ifg>0thenn=za-g*ne
  139. 815 rem bestimmung der ganzzahl
  140. 820 syspr,16,10,"prima gemacht":fori=1to500:nexti
  141. 825 rem zwischenbelobigung
  142. 830 ifg=0then goto 930
  143. 835 rem wenn ganzzahl null weiterarbeit uninteressant
  144. 840 syspr,10,23,"=     [192][192][192][192]":x=n:y=ne
  145. 845 rem ausgabe des naechsten bruchstriches
  146. 850 poke214,10:poke211,24:sys58640:inputn$:x$=left$(n$,2):a=val(x$)
  147. 855 rem da die eingabe des bruchstriches wg nicht nummerisch erfolgen kann muss
  148. 856 rem die eingabe umgewandelt werden von string in nummerisch
  149. 860 ifa=g then880
  150. 865 rem wert stimmmt und sprung
  151. 870 ze=10:sp=24:gosub30:goto840
  152. 875 rem falsche antwort
  153. 880 poke1448,32:syspr,11,28,y
  154. 885 rem das fragezeichen weg und ausgabe des nenners
  155. 890 n=0: poke211,28:poke214, 9:sys58640:inputn
  156. 895 rem abfrage des zaehlers
  157. 900 ifn=xthen930
  158. 905 rem wenn richtig sprung
  159. 910 ze=9:sp=27:gosub30:goto890
  160. 915 rem falscheingabe
  161. 920 :
  162. 930 gosub980:nextaz:syspr,14,10," e n d e [146]":wait198,1
  163. 935 rem wenn der zehnte durchlauf nicht erreicht ist wieder an den anfang
  164. 936 rem vorher noch ausgabe der fehler und verbrauchten zeit
  165. 940 goto 1020
  166. 950 ifn=y*d+f/a*cthen970
  167. 955 rem unterprogramm fuer plusrechnung
  168. 960 ze=9:sp=18:gosub30:goto500
  169. 970 goto540
  170. 975 rem ruecksprung da von hieran egal ob plus oder minusrechnug
  171. 980 fori=1to500:nexti:print"[147]":syspr,10,2,"du hast ";fa;"[146] fehler gemacht"
  172. 985 rem ausgabe der fehler und verbrauchten zeit
  173. 990 mi$=mid$(ti$,3,2):se$=mid$(ti$,5,2)
  174. 995 rem da nur sec und min interessant auch nur diese ausgabe
  175. 1000 syspr,12,2,"und ";mi$;"[146] min, ";se$;"[146] sek. gebraucht!":fa=0
  176. 1010 wait198,1:fori=0to9:poke631+i,0:nexti:return
  177. 1015 rem auf tastendruck warten und die eingabe im tastaturpuffer loeschen
  178. 1020 fori=1to1000:nexti:print"[147]":syspr,10, 6,"willst du nochmal? (j/n)";
  179. 1030 inputn$:ifn$=chr$(74)thenaz=0:fa=0:goto 20
  180. 1035 rem wenn nochmal natuerlich die fehler loeschen und an den anfang ohne
  181. 1036 rem das maschinenprogramm neu zu schreiben
  182. 1040 data32,253,174,32,158,183,138,72,32
  183. 1045 rem das maschinenprogramm in datas
  184. 1050 end
  185. 1060 data 253,174,32,158,183,138,168,104,170
  186. 1070 data 24,32,240,255,32,253,174,76,160
  187. 1080 data 170,0,0
  188.