home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / soundpot / p / sbasics.lbr / MATH.BZS / MATH.BAS
Encoding:
BASIC Source File  |  1993-10-25  |  3.1 KB  |  148 lines

  1.  
  2. $lines
  3. var l,m,n,answer = integer 
  4. var low_lim,up_lim,tries,i = integer
  5. var sym = char
  6.  
  7. procedure addition
  8.      begin 
  9.     l=m+n
  10.     print m;" + " ; n ; " = ";
  11.      end
  12. end
  13.  
  14. procedure subtraction
  15.      begin
  16.     l=m-n
  17.     print m;" - " ; n ; " = ";
  18.      end
  19. end
  20.  
  21. procedure multiplication
  22.      begin
  23.     l=m*n
  24.     print m;" * " ; n ; " = ";
  25.      end
  26. end
  27.  
  28. procedure division
  29.      begin
  30.     l=m/n
  31.     print m;" / " ; n ; " = ";
  32.      end
  33. end
  34.  
  35.  
  36. function operand=integer
  37.      var ran_num=integer
  38.      begin
  39.     ran_num=int(rnd(1)*up_lim+1)
  40.     if ran_num<low_lim then ran_num=operand 
  41.      end
  42. end=ran_num
  43.  
  44. comment
  45. this procedure finds 2 random numbers within the limits 
  46. and places the larger in m. it also insures that m/n 
  47. has an integer value.
  48. end
  49. procedure get_numbers
  50.         m=operand 
  51.         n=operand 
  52.     if sym = '/' and int(m/n) <> (m/n) then get_numbers 
  53.     if n>m then 
  54.            begin 
  55.              l=m
  56.              m=n
  57.              n=l
  58.            end
  59.  
  60. end
  61.  
  62. procedure math_time
  63.     get_numbers 
  64.     i=0
  65.       begin
  66.         case sym of
  67.                 '+' : addition                   
  68.                 '-' : subtraction
  69.                 '*' : multiplication
  70.                 '/' : division
  71.         end
  72.       end
  73. end
  74.  
  75.  
  76.  
  77. rem: this procedure gets your answer
  78. procedure get_answer
  79.         input answer
  80.         if answer <> -1 then  
  81.           begin 
  82.             if answer = l then 
  83.               begin
  84.                 print "YOU ARE RIGHT!"
  85.                 math_time
  86.                 get_answer
  87.               end
  88.             else 
  89.               begin
  90.                 i=i+1
  91.              if i<tries then 
  92.                   begin
  93.                     print "SORRY, WRONG ANSWER ...PLEASE TRY AGAIN "
  94.                     get_answer
  95.                   end
  96.                 else 
  97.                   begin
  98.                     print "THAT IS " ; i ; " TRIES"
  99.                     print "THE CORRECT ANSWER IS ";l
  100.                     math_time
  101.                     get_answer
  102.                   end
  103.                end
  104.            end
  105. end
  106.  
  107.  
  108. rem: the main program begins
  109.  
  110. text 0,&
  111.  
  112. ****************************************************************************
  113.                      THIS IS THE MATH QUIZ GAME
  114. ****************************************************************************
  115.  
  116.  
  117. INPUT ONE OF THE FOLLOWING SYMBOLS FOR THE MATH OPERATION YOU WANT TO TRY:
  118.  
  119. INPUT "+" FOR ADDITION
  120. INPUT "-" FOR SUBTRACTION
  121. INPUT "*" FOR MULTIPLICATION
  122. INPUT "/" FOR DIVISION
  123. INPUT "Q" WHEN YOU WANT TO QUIT THIS GAME
  124.  
  125. TO CHANGE THE TYPE OF MATH OPERATION YOU WANT TO DO, TYPE -1  WHEN THE 
  126. COMPUTER GIVES YOU A NEW PROBLEM.
  127.  
  128. &
  129.  
  130. repeat 
  131.   begin
  132.     input "INPUT MATH OPERATION SYMBOL "; sym
  133.     if sym = '+' or sym = '-' or sym = '*' or sym = '/' then
  134.       begin
  135.         print "INPUT THE LOWER AND UPPER LIMITS OF YOUR NUMBERS (L,U) ";
  136.         input low_lim,up_lim
  137.         print "INPUT THE NUMBER OF INCORRECT ANSWERS YOU ARE ALLOWED ";
  138.         input tries
  139.         math_time 
  140.         get_answer
  141.       end
  142.  
  143.   end 
  144.     until sym = 'Q' or sym = 'q'
  145.  
  146.  
  147.  
  148.