32 lines
752 B
Plaintext
32 lines
752 B
Plaintext
rem - return the digital sum of n represented as a string
|
|
function digitalsum(nstr = string) = integer
|
|
var i, slen, sum = integer
|
|
var ch = char
|
|
slen = len(nstr)
|
|
sum = 0
|
|
for i = 1 to slen
|
|
ch = mid(nstr, i, 1)
|
|
rem - don't process leading or embedded spaces, etc.
|
|
if ch >= '0' and ch <= '9' then
|
|
sum = sum + (ch - '0')
|
|
next i
|
|
end = sum
|
|
|
|
var nstr = string
|
|
var droot, pers = integer
|
|
|
|
0again
|
|
rem - input1 does not advance to next line; control-C will exit
|
|
input1 "What number"; nstr
|
|
droot = digitalsum(nstr)
|
|
pers = 1
|
|
while droot > 9 do
|
|
begin
|
|
droot = digitalsum(str$(droot))
|
|
pers = pers + 1
|
|
end
|
|
print " digital root ="; droot; " persistence ="; pers
|
|
goto 0again
|
|
|
|
end
|