43 lines
2 KiB
Text
43 lines
2 KiB
Text
# returns original phrase with the order of the words reversed #
|
|
# a word is a sequence of non-blank characters #
|
|
PROC reverse word order = ( STRING original phrase )STRING:
|
|
BEGIN
|
|
STRING words reversed := "";
|
|
STRING separator := "";
|
|
INT start pos := LWB original phrase;
|
|
WHILE
|
|
# skip leading spaces #
|
|
WHILE IF start pos <= UPB original phrase
|
|
THEN original phrase[ start pos ] = " "
|
|
ELSE FALSE
|
|
FI
|
|
DO start pos +:= 1
|
|
OD;
|
|
start pos <= UPB original phrase
|
|
DO
|
|
# have another word, find it #
|
|
INT end pos := start pos;
|
|
WHILE IF end pos <= UPB original phrase
|
|
THEN original phrase[ end pos ] /= " "
|
|
ELSE FALSE
|
|
FI
|
|
DO end pos +:= 1
|
|
OD;
|
|
( original phrase[ start pos : end pos - 1 ] + separator ) +=: words reversed;
|
|
separator := " ";
|
|
start pos := end pos + 1
|
|
OD;
|
|
words reversed
|
|
END # reverse word order # ;
|
|
|
|
# reverse the words in the lines as per the task #
|
|
print( ( reverse word order ( "--------- Ice and Fire ------------ " ), newline ) );
|
|
print( ( reverse word order ( " " ), newline ) );
|
|
print( ( reverse word order ( "fire, in end will world the say Some" ), newline ) );
|
|
print( ( reverse word order ( "ice. in say Some " ), newline ) );
|
|
print( ( reverse word order ( "desire of tasted I've what From " ), newline ) );
|
|
print( ( reverse word order ( "fire. favor who those with hold I " ), newline ) );
|
|
print( ( reverse word order ( " " ), newline ) );
|
|
print( ( reverse word order ( "... elided paragraph last ... " ), newline ) );
|
|
print( ( reverse word order ( " " ), newline ) );
|
|
print( ( reverse word order ( "Frost Robert -----------------------" ), newline ) )
|