home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug037.ark / FRAC3.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  3KB  |  106 lines

  1. %INCLUDE HEADER
  2. REM ********************FRAC3************************
  3.  
  4. DRILL.NAME$="MULTIPLICATION OF FRACTIONS"
  5. REM MULTIPLICATION OF FRACTIONS
  6.          PRINT
  7. B=10
  8.          P=9
  9.          D=4
  10.          PRINT "OK, ";N$;". Now let's practice multiplying fractions.  I will"
  11.          PRINT "give you two fractions and you give me their product in"
  12.          PRINT "lowest terms.  To do this, enter the numerator first, '/',"
  13.          PRINT "then the denominator of the answer. "
  14.          PRINT
  15.          C=0
  16.          I=0
  17.          N=0
  18. 210 GOSUB 700
  19.          GOSUB 800
  20.          IF A$<>"C" THEN GOTO 270
  21. 240 C=C+1
  22.          I=I+1
  23.          GOTO 430
  24. 270 PRINT " TRY AGAIN."
  25.          IF A$<>"L" THEN GOTO 360
  26.          GOSUB 800
  27.          IF A$="C" THEN GOTO 240
  28.          IF A$<>"L" THEN GOTO 380
  29.          PRINT " ONE MORE TRY."
  30.          GOSUB 800
  31.          IF A$="C" THEN GOTO 240
  32.          GOTO 410
  33. 360 GOSUB 800
  34.          IF A$="C" THEN GOTO 430
  35. 380 PRINT "  TRY ONE MORE TIME"
  36.          GOSUB 800
  37.          IF A$="C" THEN GOTO 430
  38. 410 PRINT "  THE ANSWER IS ";U;"/";L
  39.          I=0
  40. 430 IF I>P*C/N THEN GOTO 1000.2
  41.          IF N<7 THEN GOTO 210
  42.          IF C/N >= .7 THEN GOTO 210
  43.          IF D=1 THEN GOTO 210
  44.          D=D-1
  45.          IF C/N >= .5 THEN GOTO 210
  46.          D=1
  47.          GOTO 210
  48.          IF C<>N THEN GOTO 1000.2
  49.          D=D+1
  50. 700      N=N+1
  51.          U=INT(3*D*RND+1)
  52.          L=INT(3*D*RND+1)
  53.          Z1=INT(3*D*RND+1)
  54.          Z2=INT(3*D*RND+1)
  55.       PRINT
  56.          PRINT " ","(";U;"/";L;") * (";Z1;"/";Z2;") = ";
  57.          U=U*Z1
  58.          L=L*Z2
  59. RETURN
  60. 800      INPUT LINE Z$
  61. RANDOMIZE
  62. IF Z$="QUIT" THEN GOTO 1000.2
  63. Z1=VAL(LEFT$(Z$,MATCH("/",Z$,1)))
  64. Z2=VAL(MID$(Z$,MATCH("/",Z$,1)+1,LEN(Z$)))
  65.          W1=U
  66.          W2=L
  67.          GOSUB 1060
  68.          U=W1
  69.          L=W2
  70.          IF Z1<>U THEN GOTO 920
  71.          IF Z2=0 THEN GOTO 1020
  72.          IF Z2<>L THEN GOTO 920
  73.          PRINT U;"/";L;" IS CORRECT."
  74.          A$="C"
  75. RETURN
  76. 920      W1=Z1
  77.          W2=Z2
  78.          GOSUB 1060
  79.          Z1=W1
  80.          Z2=W2
  81.          IF Z1<>U THEN GOTO 1020
  82.          IF Z2<>L THEN GOTO 1020
  83.          PRINT "Not in lowest terms. ";
  84.          A$="L"
  85. RETURN
  86. 1020     PRINT "Not correct. ";
  87.          I=0
  88.          A$="I"
  89. RETURN
  90. 1060     K1=W1
  91.          K2=W2
  92. 1080     J=INT(W1/W2)
  93.          R=W1-J*W2
  94.          IF R=0 THEN GOTO 1140
  95.          W1=W2
  96.          W2=R
  97.          GOTO 1080
  98. 1140     R=W2
  99.          W1=K1/R
  100.          W2=K2/R
  101. RETURN
  102. %INCLUDE GRADE
  103.  
  104.          END
  105.  
  106.