62 lines
1.1 KiB
Text
62 lines
1.1 KiB
Text
BYTE FUNC Find(CHAR ARRAY s CHAR c BYTE POINTER err)
|
|
BYTE i
|
|
FOR i=1 TO s(0)
|
|
DO
|
|
IF s(i)=c THEN
|
|
err^=0 RETURN (i)
|
|
FI
|
|
OD
|
|
err^=1
|
|
RETURN (0)
|
|
|
|
INT FUNC Decode(CHAR ARRAY s BYTE start,stop BYTE POINTER err)
|
|
CHAR ARRAY tmp(20),tmp2(20)
|
|
INT value
|
|
|
|
IF s(start)='+ THEN
|
|
start==+1
|
|
FI
|
|
SCopyS(tmp,s,start,stop)
|
|
value=ValI(tmp)
|
|
|
|
;Check if conversion failed
|
|
IF value=0 AND s(start)#'0 THEN
|
|
err^=1 RETURN (0)
|
|
FI
|
|
|
|
;Check if value is out of range
|
|
IF value<-1000 OR value>1000 THEN
|
|
err^=1 RETURN (0)
|
|
FI
|
|
|
|
err^=0
|
|
RETURN (value)
|
|
|
|
PROC Main()
|
|
CHAR ARRAY s(20)
|
|
BYTE pos,err,err2,value
|
|
INT a,b,sum
|
|
|
|
DO
|
|
PrintE("Enter two integer numbers between -1000 and 1000, separated by a space or Q for quit")
|
|
InputS(s)
|
|
IF s(0)=1 AND (s(1)='Q OR s(1)='q) THEN
|
|
EXIT
|
|
FI
|
|
|
|
pos=Find(s,' ,@err)
|
|
IF err=0 THEN
|
|
a=Decode(s,1,pos-1,@err)
|
|
b=Decode(s,pos+1,s(0),@err2)
|
|
err=err OR err2
|
|
FI
|
|
|
|
IF err=0 THEN
|
|
sum=a+b
|
|
PrintF("Their sum is %I%E",sum)
|
|
ELSE
|
|
PrintE("Invalid input!")
|
|
FI
|
|
PutE();
|
|
OD
|
|
RETURN
|