32 lines
1.0 KiB
Plaintext
32 lines
1.0 KiB
Plaintext
10 PRINT "Use integer numbers and signs"'"+ - * / ( )"''
|
|
20 LET s$="": REM last symbol
|
|
30 LET pc=0: REM parenthesis counter
|
|
40 LET i$="1+2*(3+(4*5+6*7*8)-9)/10"
|
|
50 PRINT "Input = ";i$
|
|
60 FOR n=1 TO LEN i$
|
|
70 LET c$=i$(n)
|
|
80 IF c$>="0" AND c$<="9" THEN GO SUB 170: GO TO 130
|
|
90 IF c$="+" OR c$="-" THEN GO SUB 200: GO TO 130
|
|
100 IF c$="*" OR c$="/" THEN GO SUB 200: GO TO 130
|
|
110 IF c$="(" OR c$=")" THEN GO SUB 230: GO TO 130
|
|
120 GO TO 300
|
|
130 NEXT n
|
|
140 IF pc>0 THEN PRINT FLASH 1;"Parentheses not paired.": BEEP 1,-25: STOP
|
|
150 PRINT "Result = ";VAL i$
|
|
160 STOP
|
|
170 IF s$=")" THEN GO TO 300
|
|
180 LET s$=c$
|
|
190 RETURN
|
|
200 IF (NOT (s$>="0" AND s$<="9")) AND s$<>")" THEN GO TO 300
|
|
210 LET s$=c$
|
|
220 RETURN
|
|
230 IF c$="(" AND ((s$>="0" AND s$<="9") OR s$=")") THEN GO TO 300
|
|
240 IF c$=")" AND ((NOT (s$>="0" AND s$<="9")) OR s$="(") THEN GO TO 300
|
|
250 LET s$=c$
|
|
260 IF c$="(" THEN LET pc=pc+1: RETURN
|
|
270 LET pc=pc-1
|
|
280 IF pc<0 THEN GO TO 300
|
|
290 RETURN
|
|
300 PRINT FLASH 1;"Invalid symbol ";c$;" detected in pos ";n: BEEP 1,-25
|
|
310 STOP
|