| ANSWER TO EXERCISE 71 | |
|
Again, the first question is how to store the number dialled: in this case, into a string array. The token is:
Constant MAX_PHONE_LENGTH = 30;
Array dialled_number string MAX_PHONE_LENGTH;
[ PhoneNumber f a l ch pp i;
pp=1; if (NextWordStopped()==-1) return 0;
do
{ a=WordAddress(wn-1); l=WordLength(wn-1);
for (i=0:i<l:i++)
{ ch=a->i;
if (ch<'0' ch>'9')
{ if (ch~='-') { f=1; if (i~=0) return -1; } }
else
{ if (pp<MAX_PHONE_LENGTH)
dialled_number->(pp++)=ch-'0';
}
}
} until (f==1 NextWordStopped()==-1);
if (pp==1) return -1;
dialled_number->0 = pp-1;
return 0;
];
To demonstrate this in use,
[ DialPhoneSub i; print "You dialled <"; for (i=1:i<=dialled_number->0:i++) print dialled_number->i; ">"; ]; Verb "dial" * PhoneNumber -> DialPhone; |