Реферат: Тип STRING
{ i - номер первого пробела }
Dec(i);
{ выведем слово }
WRITELN(Copy(s,1,i));
{ удалим слово из текста }
Delete(s,1,i);
END;
END.
Теперь запишем то же самое, используя функции и процедуры :
VAR s : STRING; i : Byte;
CONST Letters : SET OF Char = ['а'..'п','р'..'я','А'..'Я']; {это алфавит}
PROCEDURE DelTail(VAR s:STRING);
BEGIN WHILE NOT(s[Length(s)] IN Letters)AND(s<>'') DO Delete(s,Length(s),1); END;
PROCEDURE DelLead(VAR s:STRING);
BEGIN WHILE NOT(s[1] IN Letters) DO Delete(s,1,1); END;
FUNCTION MakeWord(s:STRING; VAR Bound:Byte):STRING;
BEGIN Bound:=1;
WHILE (s[Bound] IN Letters)AND(Bound<=Length(s)) DO INC(Bound);
Dec(Bound); MakeWord:=Copy(s,1,i); END;
BEGIN WRITE('Введите текст '); READLN(s);
{ удалим завершающие пробелы }
DelTail(s);
IF s='' THEN BEGIN WRITELN('текст пуст'); Halt; END;
WRITELN('Слова текста :');
{ организуем цикл ПО СЛОВАМ }
WHILE s<>'' DO BEGIN
{ удалим лидирующие пробелы } DelLead(s);
{ выведем слово } WRITELN(MakeWord(s,i));
{ удалим слово из текста } Delete(s,1,i);