58 lines
1.2 KiB
Text
58 lines
1.2 KiB
Text
MODULE ReverseWords;
|
|
|
|
FROM STextIO IMPORT
|
|
WriteString, WriteLn;
|
|
FROM Strings IMPORT
|
|
Assign, Concat, Append;
|
|
|
|
CONST
|
|
NL = CHR(10);
|
|
Sp = ' ';
|
|
Txt = "---------- Ice and Fire -----------" + NL +
|
|
NL +
|
|
"fire, in end will world the say Some" + NL +
|
|
"ice. in say Some" + NL +
|
|
"desire of tasted I've what From" + NL +
|
|
"fire. favor who those with hold I" + NL +
|
|
NL +
|
|
"... elided paragraph last ..." + NL +
|
|
NL +
|
|
"Frost Robert -----------------------" + NL;
|
|
|
|
TYPE
|
|
String400 = ARRAY [0 .. 399] OF CHAR;
|
|
|
|
PROCEDURE AddWord(Source: ARRAY OF CHAR; VAR INOUT Destination: ARRAY OF CHAR);
|
|
VAR
|
|
R: String400;
|
|
BEGIN
|
|
Concat(Source, Sp, R);
|
|
Append(Destination, R);
|
|
Assign(R, Destination);
|
|
END AddWord;
|
|
|
|
VAR
|
|
I: CARDINAL;
|
|
SingleWord, CurrentLine: String400;
|
|
C: CHAR;
|
|
|
|
BEGIN
|
|
SingleWord := "";
|
|
CurrentLine := "";
|
|
FOR I := 0 TO HIGH(Txt) DO
|
|
C := Txt[I];
|
|
CASE C OF
|
|
Sp:
|
|
AddWord(SingleWord, CurrentLine);
|
|
SingleWord := ""; |
|
|
NL:
|
|
AddWord(SingleWord, CurrentLine);
|
|
WriteString(CurrentLine);
|
|
WriteLn;
|
|
SingleWord := "";
|
|
CurrentLine := ""; |
|
|
ELSE
|
|
Append(C, SingleWord);
|
|
END;
|
|
END;
|
|
END ReverseWords.
|