home *** CD-ROM | disk | FTP | other *** search
- REM PROGRAM QUADROOT;PROGRAMMER MICHAEL P FINERTY, 9/5/84
- REM THIS IS THE LISTING FOR PROGRAM QUADROOT.COM, AN S-BAISC PROGRAM
- REM THAT EVALUATES THE ROOTS OF QUADRATIC EQUATIONS USING THE
- REM COEFFICIENTS OF THE INDIVIDUAL TERMS: A,B,&C OF THE EQUATION:
- REM A*X^2 + B*X + C = 0 TO FIND THE POINTS OF INTERSECTION (TWO)
- REM OF THE CURVE WITH THE LINE Y = 0. THE ROOTS MAY BE EITHER REAL
- REM OR COMPLEX AND EITHER EQUAL OR UNEQUAL. IN THIS IMPLEMENTATION
- REM "A" CANNOT BE EQUAL TO ZERO.
- REM
- REM *** DECLARATION OF VARIABLES ***
- REM
- 10 VAR AXIS, A, B, C, DIF, DISCRIM = REAL
- VAR ANS = STRING
- REM
- REM *** INPUT OF VARAIABLES AND MESSAGES ***
- REM
- CONSOLE
- PRINT "PLEASE INPUT THE COEFFICIENTS OF YOUR QUADRATIC"
- INPUT "A = ";A
- IF A = 0 THEN PRINT "YOUR EQUATION IS NOT QUADRATIC"
- IF A = 0 THEN 10
- LPRINTER
- PRINT "A = ";A
- CONSOLE
- REM
- INPUT "B = ";B
- LPRINTER
- PRINT "B = ";B
- CONSOLE
- REM
- INPUT "C = ";C
- LPRINTER
- PRINT "C = ";C
- CONSOLE
- REM
- REM *** AXIS IS AXIS OF SYMMETRY OF PARABOLA ***
- REM
- AXIS = -B/(2*A)
- REM
- REM *** ROOTS ARE AT DISTANCE DIF FROM AXIS ***
- REM
- IF B*B = 4*A*C THEN DIF = 0
- IF B*B = 4*A*C THEN 20
- REM
- DIF = ((ABS(B*B - 4*A*C))^0.5)/(2*A)
- REM
- REM *** ROOTS ARE REAL OR COMPLEX DEPENDING ON SIGN OF DISCRIM ***
- REM *** THEY ARE EQUAL IF DISCRIM IS ZERO ***
- REM
- 20 DISCRIM = B*B - 4*A*C
- REM
- REM
- REM *****************************************************************
- REM
- REM LOGICAL PORTION OF PROGRAM : SGN(A) = 1 IF A GREATER THAN ZERO
- REM = 0 IF A EQUALS ZERO
- REM =-1 IF A LESS THAN ZERO
- REM
- CASE SGN(DISCRIM) OF
- -1: BEGIN
- PRINT "ROOTS ARE: "; AXIS;" +i*";DIF
- PRINT "AND: "; AXIS;" -i*";DIF
- PRINT "--ooO0Ooo--"
- LPRINTER
- PRINT "ROOTS ARE: "; AXIS;" +i*";DIF
- PRINT "AND: "; AXIS;" -i*";DIF
- PRINT "--ooO0Ooo--"
- CONSOLE
- END
- 0: BEGIN
- PRINT "ROOTS ARE: ";AXIS
- PRINT "AND: "; AXIS
- PRINT "--ooO0Ooo--"
- LPRINTER
- PRINT "ROOTS ARE: ";AXIS
- PRINT "AND: "; AXIS
- PRINT "--ooO0Ooo--"
- CONSOLE
- END
- 1: BEGIN
- PRINT "ROOTS ARE: "; AXIS + DIF
- PRINT "AND: "; AXIS - DIF
- PRINT "--ooO0Ooo--"
- LPRINTER
- PRINT "ROOTS ARE: "; AXIS + DIF
- PRINT "AND: "; AXIS - DIF
- PRINT "--ooO0Ooo--"
- CONSOLE
- END
- END
- PRINT
- LPRINTER
- PRINT
- CONSOLE
- REM
- REM *** CONDITIONAL LOOP FOR MORE QUADRATICS ***
- REM
- PRINT " DO YOU WANT TO USE ANOTHER QUADRATIC? Y/N?"
- INPUT ANS
- IF ANS = "Y" THEN 10 ELSE END
- =-1 IF A LESS THAN ZERO
- REM
- CASE SGN(DISCRIM) OF
- -1: BEGIN
- PRINT "ROOTS ARE: "; AXIS;