1  REM  ********** HP TIME-SHARED BASIC PROGRAM LIBRARY ****************
2  REM
3  REM        SAT: TRIGONOMETRIC SOLUTIONS OF TRIANGLES
4  REM
5  REM            36182  REV A         3/72
6  REM
7  REM  ************ CONTRIBUTED PROGRAM *********************************
8  REM
9  REM
10  REM
12  PRINT "THIS PROGRAM WILL SOLVE ANY TRIANGLE GIVEN;"
13  PRINT "(1)AAS  (2)SSA  (3)SAS  (4)ASA  (5)SSS"
14  PRINT "WHEN ENTERING ANGLES, ENTER THE DEGREES AND MINUTES"
15  PRINT "SEPERATED BY A COMMA;I.E. 36,50 FOR 36 DEG50MIN AND 26,0";
16  PRINT "FOR 26 DEGREES."
17  PRINT "THE ORDER THE PARTS ARE ENTERED IS IMPORTANT!"
18  PRINT "PLEASE INPUT THE NUMBER CORRESPONDING TO YOUR PROBLEM."
19  INPUT N
20  LET K1=3.14159/180
25  LET K2=180/3.14159
30  IF N=1 THEN 1000
35  IF N=2 THEN 2000
40  IF N=3 THEN 3000
45  IF N=4 THEN 4000
50  IF N=5 THEN 5000
1000  PRINT "INPUT THE TWO ANGLES AND THEN THE SIDE OPPOSITE THE";
1001  PRINT " SECOND SIDE."
1007  INPUT A,B,C,D,E
1009  LET A1=A+B/60
1011  LET B1=C+D/60
1012  LET B=E
1015  IF A1 <= 0 OR B1 <= 0 OR E <= 0 THEN 1035
1020  LET C1=180-(A1+B1)
1025  LET A2=SIN(A1*K1)*E/SIN(B1*K1)
1026  LET A=A2
1030  LET C2=SIN(C1*K1)*E/SIN(B1*K1)
1031  LET C=C2
1032  IF C1 <= 0 OR A <= 0 OR C <= 0 THEN 1035
1033  GOSUB 6000
1034  GOTO 18
1035  PRINT "THERE IS NO TRIANGLE FORMED."
1040  GOTO 18
2000  REM SOLUTION OF AMBIGUOUS CASE
2003  PRINT "INPUT THE TWO SIDES AND THEN THE ANGLE OPPOSITE THE";
2004  PRINT " SECOND SIDE."
2009  INPUT A,B,C,D
2010  LET B1=B2=C+D/60
2011  IF A <= 0 OR B <= 0 OR B2 <= 0 THEN 2030
2012  IF B2 >= 180 THEN 2030
2015  IF B<A*SIN(B1*K1) THEN 2030
2016  IF B=A*SIN(B1*K1) THEN 2020
2017  IF A>B AND B>A*SIN(B1*K1) THEN 2043
2018  IF A>B THEN 2027
2020  PRINT "THERE IS ONLY ONE TRIANGLE FORMED."
2025  GOSUB 2500
2027  GOTO 18
2030  PRINT "THERE IS NO TRIANGLE FORMED."
2033  GOTO 18
2035  PRINT "THERE IS ONLY ONE TRIANGLE FORMED"
2037  GOSUB 2500
2040  GOTO 18
2043  PRINT "THERE ARE TWO TRIANGLES FORMED."
2045  GOSUB 2500
2047  GOSUB 2700
2050  GOTO 18
2500  LET A2=A*SIN(B1*K1)/B
2510  LET A3=SQR(1-A2^2)
2520  LET A1=ATN(A2/A3)*K2
2530  LET C1=180-(A1+B2)
2540  LET C=B*SIN(C1*K1)/SIN(B1*K1)
2550  GOSUB 6000
2560  RETURN 
2700  LET A1=180-A1
2710  LET C1=180-(A1+B2)
2720  GOSUB 6000
2740  RETURN 
3000  PRINT "ENTER THE TWO SIDES AND THE INCLUDED ANGLE.";
3001  PRINT " IN THAT ORDER!"
3010  INPUT A,B,C,M
3015  LET C1=C+M/60
3020  LET D=.5*(180-C1)*K1
3030  LET R=(A-B)*TAN(D)/(A+B)
3040  LET S=ATN(R)*K2
3045  LET D=D*K2
3050  LET A1=D+S
3060  LET B1=D-S
3070  LET C=A*SIN(C1*K1)/SIN(A1*K1)
3075  IF C>0 THEN 3090
3080  GOTO 2030
3090  GOSUB 6000
3100  GOTO 18
4000  PRINT "INPUT THE TWO ANGLES AND THEN THE INCLUDED SIDE."
4007  INPUT A,B,C,D,E
4009  LET A1=A+B/60
4011  LET C1=C+D/60
4013  LET B1=180-(A1+C1)
4020  GOTO 1012
5000  PRINT "ENTER THE THREE SIDES!"
5010  INPUT A,B,C
5020  LET S=.5*(A+B+C)
5030  LET R=SQR((S-A)*(S-B)*(S-C)/S)
5040  LET A1=2*ATN(R/(S-A))*K2
5050  LET B1=2*ATN(R/(S-B))*K2
5060  LET C1=2*ATN(R/(S-C))*K2
5070  GOSUB 6000
5080  GOTO 18
6000  IF INT(A1*100)/100=90 OR INT(B1*100)/100=90 THEN 6015
6001  IF INT(C1*100)/100=90 THEN 6015
6005  IF A1>90 OR B1>90 OR C1>90 THEN 6020
6010  PRINT "THIS IS AN ACUTE TRIANGLE."
6011  GOTO 6030
6015  PRINT "THIS IS A RIGHT TRIANGLE."
6016  GOTO 6030
6020  PRINT "THIS IS AN OBTUSE TRIANGLE."
6030  PRINT TAB(22)"ANGLES";TAB(46)"SIDES"
6031  PRINT " ","DEGREES","MINUTES"
6035  PRINT "A1=",INT(A1),INT((A1-INT(A1))*6000)/100,"A="A
6040  PRINT "B1=",INT(B1),INT((B1-INT(B1))*6000)/100,"B="B
6045  PRINT "C1=",INT(C1),INT((C1-INT(C1))*6000)/100,"C="C
6100  RETURN 
9999  END 
