1 ! PROGRAM NAME --> A D D F R A -- BY BOB HUNTSMAN 2 ! PROGRAM -ADD FRAC- BY BOB HUNTSMAN 10 DIM B$(5%):B$(1%)="EASY":B$(2%)="MEDIUM":B$(3%)="HARD": B$(4%)="WRONG":B$(5%)="RIGHT 12 OPEN "KB:" AS FILE 1%:FIELD #1%,K% AS Q$,1% AS M3$(K%) FOR K%=0% TO 10%: INPUT "NAME PLEASE";N$:V9$=SYS(CHR$(3%)) 15 RANDOMIZE 25 D2%=11%:X1%=3% 170 PRINT:PRINT "HOW MANY? ";:GOSUB 29000:GOTO 170 IF M4$<"1" OR M4$>"9" :X1%=ASCII(M4$)-48%:PRINT M4$:X%=0%:GOTO 1300 300 A1%=FNR%(6%):B1%=FNR%(5%)+1%:A2%=FNR%(6%):B2%=FNR%(5%)+1% 310 C%=FNC%(A1%,B1%):A1%=A1%/C%:B1%=B1%/C% 320 C%=FNC%(A2%,B2%):A2%=A2%/C%:B2%=B2%/C%: C%=B1%*B2%/FNC%(B1%,B2%) 325 GOTO 300 IF B1%=1% OR B2%=1% OR A1%>B1% OR A2%>B2% 330 C1%=A1%*C%/B1%:C2%=A2%*C%/B2%:D%=C1%+C2% 331 GOTO 300 IF C1%+C2%>=C%:GOTO 300 IF FNC%(C%,D%)<>1% 332 GOTO 2200 IF F%=1%:PRINT:PRINT: PRINT "ADD THESE FRACTIONS -- AND I'LL HELP YOU!!!":PRINT: PRINT 334 U%=U%+1%:GOTO 340 IF U%<2% OR F%=1% 336 PRINT "WOULD YOU LIKE ME TO HURRY? ";:GOSUB 1400: F%=1% IF A$="Y" 340 PRINT TAB(9%);FND$(A1%,B1%);" +";TAB(19%);FND$(A2%,B2%); TAB(25%);"=?":PRINT:PRINT 342 GOTO 2220 IF F%=1%:PRINT: PRINT "FIRST, TYPE IN THE COMMON DENOMINATOR!":PRINT: PRINT 350 PRINT "=";TAB(10%);"/";:E%=FNA%(C%):PRINT TAB(20%);"/"; FNN$(E%); 352 GOTO 355 IF F%=1%:PRINT TAB(40%); "NOW TYPE IN THE NUMERATORS!!"; 355 PRINT CHR$(13%)+CHR$(0%);:E1%=1%:E1%=E%/C% IF (E%/C%)*C%=E% 360 PRINT TAB(10%-FNL%(C1%*E1%));:C3%=FNA%(C1%*E1%): PRINT TAB(20%-FNL%(C2%*E1%));:C4%=FNA%(C2%*E1%) 362 GOTO 2260 IF F%=1%:PRINT:PRINT:PRINT "NOW ADD" + " THE NUMERATORS UP AND YOU HAVE IT --" + " IF YOU DID THE REST RIGHT!!":PRINT 370 PRINT:PRINT "=";TAB(15%);"/";FNN$(E%);CHR$(13%);CHR$(0%); TAB(15%-FNL%(D%*E1%));:D1%=FNA%(D%*E1%) 380 PRINT:PRINT:IF C%*E1%<>E% GOTO 1700 390 IF C1%*E1%<>C3% OR C2%*E1%<>C4% GOTO 1720 400 IF D%*E1%<>D1% GOTO 1740 420 GOTO 1800 IF E1%<>1%: PRINT "THAT IS EXACTLY RIGHT -- VERY GOOD!!":Q%=3%: GOSUB 800 430 GOTO 300 IF X%57%:PRINT M4$; IF M%<>32%:RETURN 1300 GOTO 300 1400 GOSUB 29000:A$=M4$+"":GOTO 1410 IF A$="Y" OR A$="N": IF A$="H" THEN F%=1%:PRINT "H -- OK!! --> ";:GOTO 1400 1410 PRINT A$:RETURN 1600 DEF FNC%(V%,V1%) 1602 A=V%:B=V1% 1605 E%=1%:D5%=0% 1625 D5%=D5%+2%:D5%=3% IF D5%=4%:IF D5%>A OR D5%>B THEN FNC%=E%: GOTO 1640 1630 IF A/D5%=INT(A/D5%) AND B/D5%=INT(B/D5%) THEN E%=E%*D5%: A=A/D5%:B=B/D5%:GOTO 1630 1635 A=FNQ%(A,D5%):B=FNQ%(B,D5%):GOTO 1625 1640 FNEND 1660 DEF FNQ%(Y,Z%) 1665 X=Y/Z%:IF X=INT(X) THEN Y=X:GOTO 1665 1670 FNQ%=Y 1675 FNEND 1700 PRINT:PRINT "SORRY -- BUT";E%;"IS NOT A COMMON MULTIPLE OF"; B1%;"AND";B2%;"." 1710 PRINT:PRINT:Q%=0%:GOSUB 800:GOTO 430 1720 PRINT:PRINT "SORRY -- BUT YOUR NUMERATOR ARE NOT CORRECT": Q%=1%:GOSUB 800:GOTO 430 1740 PRINT:PRINT "SORRY -- BUT YOU ADDED THE NUMERATORS WRONG!": Q%=1%:GOSUB 800:GOTO 430 1800 PRINT "YOU ARE ALMOST RIGHT. REDUCE YOUR ANSWER.":PRINT: PRINT 1810 PRINT TAB(10%);FND$(D1%,E%);TAB(30%);"=";TAB(40%);"/"; 1820 C6%=FNA%(C%):PRINT CHR$(13%);CHR$(0%);TAB(40%-FNL%(D%)); 1825 C7%=FNA%(D%):PRINT:PRINT 1830 IF C6%<>C% OR C7%<>D% THEN PRINT "NO, TRY AGAIN!!":PRINT: PRINT:GOTO 1810 1840 PRINT "CORRECT!!":PRINT:PRINT:Q%=2%:GOSUB 800:GOTO 430 2000 DEF FNR%(V%) 2010 V1%=INT(1000*RND(0%)):V1%=V1%-(V1%/V%)*V% 2020 FNR%=V1%+1% 2030 FNEND 2040 DEF FNN$(V%) 2045 V$=NUM$(V%):V$=MID(V$,2%,LEN(V$)-2%) 2050 FNN$=V$ 2055 FNEND 2060 DEF FND$(V2%,V3%)=FNN$(V2%)+"/"+FNN$(V3%) 2065 DEF FNA%(V2%) 2067 V%=FNL%(V2%) 2070 V$="":FOR V1%=1% TO V%:GOSUB 2100:PRINT CHR$(M%);: V$=V$+M4$:NEXT V1% 2075 FNA%=VAL(V$) 2080 FNEND 2100 GOSUB 29000:M%=ASCII(M4$):GOTO 2100 IF M%<48% OR M%>57%: RETURN 2110 DEF FNL%(V%)=INT(LOG10(V%))+1% 2200 PRINT "ADD!":GOTO 340 2220 PRINT "DENOMINATOR!":PRINT:GOTO 350 2260 PRINT:PRINT:PRINT "ADD THE NUMERATORS!":PRINT:GOTO 370 10000 DEF FNW1%(O1%,O2%,O3%)=(O1%*32%+O2%)*4%+O3% 10010 DEF FNW2%(O1%,O2%,O3%)=(O1%*24%+O2%)*3%+O3% 10100 DEF FNW%(O4%,O5%) 10105 GOTO 10160 IF O5%>3% 10110 O9%=O4%/128%:FNW%=O9% IF O5%=1% 10115 O4%=O4%-O9%*128%:O9%=O4%/4%:FNW%=O9% IF O5%=2% 10120 O4%=O4%-O9%*4%:FNW%=O4% IF O5%=3%:GOTO 10190 10160 O9%=O4%/72%:FNW%=O9% IF O5%=4% 10165 O4%=O4%-O9%*72%:O9%=O4%/3% 10170 FNW%=O9% IF O5%=5%:O4%=O4%-O9%*3%:FNW%=O4% IF O5%=6% 10190 FNEND 14000 GOSUB 29000:A$=M4$+"":GOTO 1410 IF A$="Y" OR A$="N": IF A$="H" THEN PRINT "H -- OK! --> ";:GOTO 1400 29000 GOTO 29100 IF M3%=Z3%:M4$=M3$(M3%):M3%=M3%+1%:RETURN 29100 M3%=0%:V9$=SYS(CHR$(4%)):GET #1%:Z3%=RECOUNT:GOTO 29000 32000 PRINT:PRINT "THAT IS ALL -- THESE PROBLEMS ARE FOR PRACTICE. IF" 32010 PRINT "YOU WANT MORE PRACTICE ON FRACTIONS, RUN SOME": PRINT "OF THE 'FRACTION' PACKAGE PROGRAMS!!":PRINT: V9$=SYS(CHR$(2%)):CLOSE 1% 32767 END