5 SELECT R
10 DIM A(3),S(3) 
39 PRINT "PROBLEM TYPES: 0=END PROGRAM,1=AAS,2=ASA,3=SSA,4=SAS,5=SSS"
40 PRINT "INPUT PROBLEM TYPE"
50 INPUT Z 
60 IF Z=0 THEN 999 
70 IF Z=1 THEN 420 
80 IF Z=2 THEN 390 
90 IF Z=3 THEN 470 
100 IF Z=4 THEN 350
300 PRINT "INPUT 'SIDE,SIDE,SIDE'" 
305 INPUT S(1),S(2),S(3) 
310 A(1)=(S(2)^2+S(3)^2-S(1)^2)/2/S(2)/S(3)
320 A(1)=ATN(SQR(1-A(1)^2)/A(1)) 
330 GOSUB 800
340 GOTO 40
350 PRINT "INPUT 'SIDE,ANGLE,SIDE'"
355 INPUT S(3),A(1),S(2) 
360 S(1)=SQR(S(3)^2+S(2)^2-2*S(3)*S(2)*COS(A(1)))
370 GOSUB 800
380 GOTO 40
390 PRINT "INPUT 'ANGLE,SIDE,ANGLE'" 
395 INPUT A(1),S(3),A(2) 
400 A(3)=3.1415927-A(1)-A(2) 
410 GOTO 440 
420 PRINT "INPUT 'ANGLE,ANGLE,SIDE'" 
425 INPUT A(3),A(2),S(3) 
430 A(1)=3.1415927-A(2)-A(3) 
440 S(1)=S(3)*SIN(A(1))/SIN(A(3))
450 S(2)=S(3)*SIN(A(2))/SIN(A(3))
460 GOSUB 825
465 GOTO 40
470 PRINT "INPUT 'SIDE,SIDE,ANGLE'"
475 INPUT S(1),S(2),A(1) 
480 X=S(2)*SIN(A(1))
490 IF S(1)<X THEN 900 
500 S(3)=SQR(S(2)^2-X^2) 
502 IF S(1)>X THEN 510 
504 GOSUB 800
506 GOTO 40
510 Z=SQR(S(1)^2-X^2)
530 S(3)=S(3)+Z
540 GOSUB 800
550 PRINT "ALTERNATE SOLUTION" 
560 S(3)=S(3)-2*Z
565 A(3)=A(2)-A(1) 
570 A(2)=3.1415927-A(2)
575 GOSUB 825
580 GOTO 40
800 A(2)=SIN(A(1))/S(1)*S(2) 
810 A(2)=ATN(A(2)/SQR(1-A(2)^2)) 
820 A(3)=3.1415927-A(1)-A(2) 
825 PRINT 
830 FOR I=1 TO 3 
835 IF A(I)<0 THEN 901 
840 PRINT "SIDE";I;"=";S(I)
841 PRINT "OPPOSITE ANGLE=";A(I);"RADIANS" 
850 NEXT I 
860 PRINT 
870 RETURN 
900 PRINT 
901 PRINT "NO SOLUTION"
902 PRINT 
910 GOTO 40
999 SELECT D :END 

