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 / FRAC1.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  2KB  |  104 lines

  1.  
  2. %INCLUDE HEADER
  3. REM ***********************FRAC1************************
  4. PRINT
  5. DRILL.NAME$="ADDITION OF FRACTIONS"
  6. B=10
  7. P=9
  8. D=4
  9. PRINT
  10. PRINT "OK, ";N$;". NOW LET'S PRACTICE ADDING FRACTIONS. I WILL"
  11. PRINT "GIVE YOU TWO FRACTIONS AND YOU GIVE ME THEIR SUM IN"
  12. PRINT "LOWEST TERMS.  TO DO THIS, ENTER THE NUMBERATOR FIRST, A '/',"
  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*Z2+Z1*L
  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. END
  104.