Mark Wickens

5 ONERRORGOTO900
10 MODE8:DIM:ERASEa,a$:DIMa(2),a$(2):a$(0)="r:inside":a$(1)="R:outside":a$(2)="l:side"
20 s=0:n=3:ANGLE0:c$=CHR$(5):m$="Polygon (r,R,l)   "
40 s$="A:area":z=s:GOSUB500:s=z
41 s$="n:number":z=n:GOSUB500:n=z:IFn<3 ORFRACn<>0 THEN41
45 CLS:PRINTm$;:PRINT
50 a(0)=SQR(s/n/TAN(180/n))
51 a(1)=SQR(2*s/n/SIN(360/n))
52 a(2)=SQR(ABS(4*s/n*TAN(180/n)))
100 FORi=0 TO2:PRINTc$;a$(i)" =";a(i);
110 w=ASC(INPUT$(1,@)):IFw=13 THEN170
120 IFw=30 ANDi>0 THENi=i-2:GOTO170
130 IFw=31 ANDi<2 THEN170
160 GOTO110
170 NEXT:GOTO40
500 CLS:PRINTm$;s$;
510 LOCATE0,1:PRINTc$;LEFT$(s$,1);"=";z;"?";:INPUT@42;z:LOCATE0,0:IFz<0 THEN510 ELSERETURN
900 IFERR=1 THENCLS:ONERRORGOTO0
910 IFERL=510 THENRESUME510
920 LOCATE0,1:PRINTc$;"not found";:z$=INPUT$(1,@):RESUME40