home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG037.ARK / FRAC2.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  3KB  |  114 lines

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