home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / basic / math.ark / QUADROOT.PRN < prev    next >
Encoding:
Text File  |  1986-12-21  |  3.5 KB  |  103 lines

  1. 0001:00 REM PROGRAM QUADROOT;PROGRAMMER MICHAEL P FINERTY, 9/5/84
  2. 0002:00 REM THIS IS THE LISTING FOR PROGRAM QUADROOT.COM, AN S-BAISC PROGRAM
  3. 0003:00 REM THAT EVALUATES THE ROOTS OF QUADRATIC EQUATIONS USING THE
  4. 0004:00 REM COEFFICIENTS OF THE INDIVIDUAL TERMS: A,B,&C OF THE EQUATION:
  5. 0005:00 REM  A*X^2 + B*X + C = 0 TO FIND THE POINTS OF INTERSECTION (TWO)
  6. 0006:00 REM OF THE CURVE WITH THE LINE Y = 0. THE ROOTS MAY BE EITHER REAL
  7. 0007:00 REM OR COMPLEX AND EITHER EQUAL OR UNEQUAL. IN THIS IMPLEMENTATION
  8. 0008:00 REM "A" CANNOT BE EQUAL TO ZERO.
  9. 0009:00 REM
  10. 0010:00 REM *** DECLARATION OF VARIABLES ***
  11. 0011:00 REM
  12. 0012:00 10 VAR AXIS, A, B, C, DIF, DISCRIM = REAL
  13. 0013:00 VAR ANS = STRING
  14. 0014:00 REM
  15. 0015:00 REM *** INPUT OF VARAIABLES AND MESSAGES ***
  16. 0016:00 REM
  17. 0017:00 CONSOLE
  18. 0018:00 PRINT "PLEASE INPUT THE COEFFICIENTS OF YOUR QUADRATIC"
  19. 0019:00 INPUT "A = ";A
  20. 0020:00 IF A = 0 THEN PRINT "YOUR EQUATION IS NOT QUADRATIC" 
  21. 0021:00 IF A = 0 THEN 10
  22. 0022:00    LPRINTER
  23. 0023:00    PRINT "A = ";A
  24. 0024:00    CONSOLE
  25. 0025:00 REM
  26. 0026:00 INPUT "B = ";B
  27. 0027:00    LPRINTER
  28. 0028:00    PRINT "B = ";B
  29. 0029:00    CONSOLE
  30. 0030:00 REM
  31. 0031:00 INPUT "C = ";C
  32. 0032:00   LPRINTER
  33. 0033:00   PRINT "C = ";C
  34. 0034:00   CONSOLE
  35. 0035:00 REM
  36. 0036:00 REM *** AXIS IS AXIS OF SYMMETRY OF PARABOLA ***
  37. 0037:00 REM
  38. 0038:00                   AXIS = -B/(2*A)
  39. 0039:00 REM
  40. 0040:00 REM *** ROOTS ARE AT DISTANCE DIF FROM AXIS ***
  41. 0041:00 REM
  42. 0042:00           IF B*B = 4*A*C THEN DIF = 0
  43. 0043:00           IF B*B = 4*A*C THEN 20
  44. 0044:00 REM
  45. 0045:00           DIF = ((ABS(B*B - 4*A*C))^0.5)/(2*A)
  46. 0046:00 REM
  47. 0047:00 REM *** ROOTS ARE REAL OR COMPLEX DEPENDING ON SIGN OF DISCRIM ***
  48. 0048:00 REM      *** THEY ARE EQUAL IF DISCRIM IS ZERO *** 
  49. 0049:00 REM
  50. 0050:00 20               DISCRIM = B*B - 4*A*C
  51. 0051:00 REM
  52. 0052:00 REM
  53. 0053:00 REM ***************************************************************** 
  54. 0054:00 REM
  55. 0055:00 REM LOGICAL PORTION OF PROGRAM : SGN(A) = 1 IF A GREATER THAN ZERO
  56. 0056:00 REM                                     = 0 IF A EQUALS ZERO
  57. 0057:00 REM                                     =-1 IF A LESS THAN ZERO
  58. 0058:00 REM
  59. 0059:00 CASE SGN(DISCRIM) OF
  60. 0060:00   -1: BEGIN
  61. 0061:01       PRINT "ROOTS ARE: "; AXIS;" +i*";DIF
  62. 0062:01       PRINT "AND: "; AXIS;" -i*";DIF
  63. 0063:01       PRINT "--ooO0Ooo--"
  64. 0064:01       LPRINTER
  65. 0065:01       PRINT "ROOTS ARE: "; AXIS;" +i*";DIF
  66. 0066:01       PRINT "AND: "; AXIS;" -i*";DIF
  67. 0067:01       PRINT "--ooO0Ooo--"
  68. 0068:01       CONSOLE
  69. 0069:01       END
  70. 0070:00    0: BEGIN 
  71. 0071:01       PRINT "ROOTS ARE: ";AXIS 
  72. 0072:01       PRINT "AND: "; AXIS
  73. 0073:01       PRINT "--ooO0Ooo--"
  74. 0074:01       LPRINTER
  75. 0075:01       PRINT "ROOTS ARE: ";AXIS
  76. 0076:01       PRINT "AND: "; AXIS
  77. 0077:01       PRINT "--ooO0Ooo--"
  78. 0078:01       CONSOLE
  79. 0079:01       END
  80. 0080:00    1: BEGIN
  81. 0081:01       PRINT "ROOTS ARE: "; AXIS + DIF
  82. 0082:01       PRINT "AND: "; AXIS - DIF
  83. 0083:01       PRINT "--ooO0Ooo--"
  84. 0084:01       LPRINTER
  85. 0085:01       PRINT "ROOTS ARE: "; AXIS + DIF
  86. 0086:01       PRINT "AND: "; AXIS - DIF
  87. 0087:01       PRINT "--ooO0Ooo--"
  88. 0088:01       CONSOLE
  89. 0089:01       END 
  90. 0090:00  END
  91. 0091:00  PRINT
  92. 0092:00  LPRINTER
  93. 0093:00  PRINT
  94. 0094:00  CONSOLE
  95. 0095:00 REM
  96. 0096:00 REM   *** CONDITIONAL LOOP FOR MORE QUADRATICS *** 
  97. 0097:00 REM 
  98. 0098:00  PRINT " DO YOU WANT TO USE ANOTHER QUADRATIC? Y/N?"
  99. 0099:00  INPUT ANS
  100. 0100:00  IF ANS = "Y" THEN 10 ELSE END
  101. 0101:00          ****** End of program ******
  102.  
  103.