RosettaCodeData/Task/Phrase-reversals/Action-/phrase-reversals.action
2023-07-01 13:44:08 -04:00

52 lines
841 B
Text

PROC ReversePart(CHAR ARRAY src,dst BYTE start,len)
BYTE i
FOR i=0 TO len-1
DO
dst(start+len-i-1)=src(start+i)
OD
RETURN
PROC ReverseString(CHAR ARRAY src,dst)
BYTE i
dst(0)=src(0)
ReversePart(src,dst,1,src(0))
RETURN
PROC ReverseInWords(CHAR ARRAY src,dst)
BYTE i,start
dst(0)=src(0)
i=1
WHILE i<=src(0)
DO
IF src(i)=32 THEN
dst(i)=32 i==+1
ELSE
start=i
WHILE i<=src(0) AND src(i)#32
DO i==+1 OD
ReversePart(src,dst,start,i-start)
FI
OD
RETURN
PROC ReverseWords(CHAR ARRAY src,dst)
CHAR ARRAY tmp(100)
ReverseString(src,tmp)
ReverseInWords(tmp,dst)
RETURN
PROC Main()
CHAR ARRAY s="rosetta code phrase reversal",rev(100)
PrintE(s)
ReverseString(s,rev)
PrintE(rev)
ReverseInWords(s,rev)
PrintE(rev)
ReverseWords(s,rev)
PrintE(rev)
RETURN