Mark Wickens

5 ONERRORGOTO900
10 MODE8:DIM:ERASEa,a$:DIMa(4),a$(4):c$=CHR$(5)
15 RESTORE800:FORi=0 TO4:READa$(i):NEXT
20 CLS:PRINT"Select number of face";TAB(0);"1:4f  2:6f  3:8f  4:12f  5:20f";
30 f=ASC(INPUT$(1,@))-48:IFf<1 OR f>5 THEN30
40 CLS:PRINT"Select input data";TAB(0);"1:a   2:r   3:R   4:S   5:V";
50 k=ASC(INPUT$(1,@))-48:IFk<1 OR k>5 THEN50
60 RESTORE(800+f*10):READw$,n$,e$,t$,b,c,x,y:f=f-1:k=k-1
90 CLS:PRINTw$;"hedron)";TAB(18);a$(k);
100 LOCATE0,1:PRINTc$;LEFT$(a$(k),1);"=";a(k);"?";:INPUT@42;a(k):LOCATE0,0
105 CLS:PRINTw$;"hedron)";TAB(18);n$;",";e$;"e,";t$;"v";:PRINT
110 ONk+1 GOTO200,111,112,113,114
111 a(0)=a(1)/x:GOTO200
112 a(0)=a(2)/y:GOTO200
113 a(0)=SQR(ABS(a(3)/b):GOTO200
114 a(0)=CUR(a(4)/c)
115 IFa(k)<0 THEN100
200 a(1)=a(0)*x:a(2)=a(0)*y:a(3)=b*a(0)^2:a(4)=c*a(0)^3:m=SGN(-k)+1:n=SGN(4-k)+3
300 FORi=m TOn:IFi=k THEN380
310 PRINTc$;a$(i);" =";a(i);
320 w=ASC(INPUT$(1,@)):IFw=13 THEN380
330 IFw=30 ANDi>m THENIFi=k+1 THENi=i-3:GOTO380 ELSEi=i-2:GOTO380
340 IFw=31 ANDi<n THEN380
370 GOTO320
380 NEXT:GOTO20
800 DATAa:edge,r:inside,R:outside,S:surface,V:volume
810 DATA4(tetra,3,6,4,1.732050807568,.1178511302,.2041241452319,.6123724357
820 DATA6(hexa,4,12,8,6,1,.5,.866025403784
830 DATA8(octa,3,12,6,3.464101615136,.471404520791,.4082482904638,.7071067811865
840 DATA12(dodeca,5,30,20,20.64572880706,7.663118960622,1.113516364411,1.401258538443
850 DATA20(icosa,3,30,12,8.66025403784,2.181694990624,.755761314076,.9510565162947
900 IFERR=1 THENCLS:ONERRORGOTO0
910 IFERL=100 THENRESUME100
920 LOCATE0,1:PRINTc$;"not found";:z$=INPUT$(1,@):RESUME20