var ptr: integer;function GetWord(s: string): string;// Возвращает очередное слово из строки s или пустое значение,// если в строке больше нет слов.// Перед вызовом позиция начала слова указывается переменной ptr.// Перед выходом ptr устаналивается на границу следующего слова// ptr=0 означает, что вся строка просмотрена.var n, p: integer;begin n := Length(s); if (ptr >= n) or (ptr=0) then begin ptr := 0; Result := '' end else begin p := PosEx(' ', s, ptr); if p > 0 then begin Result := Copy(s, ptr, p - ptr); ptr := p + 1 end else begin Result := Copy(s, ptr, n - ptr + 1); ptr := 0 end endend;var s1, s2, s: string; n: integer;begin writeln('Вводите строку'); readln(s1); ptr := 1; s2 := ''; repeat s := GetWord(s1); n := Length(s); if n > 0 then if (s[1] <> 'о') or (s[n] <> 'о') then s2 := s2 + s + ' ' until n = 0; n := Length(s2); if s2[n] = ' ' then s2 := Copy(s2, 1, n - 1); writeln('Результирующая строка: ', s2)end.Тестовый прогон:Вводите строкуВ это окно отлично виден и прекрасный горный ландшафт, и одинокое облако, зацепившееся за покрытую снегом вершину.Результирующая строка: В это виден и прекрасный горный ландшафт, и одинокое облако, зацепившееся за покрытую снегом вершину.