Написать программу в паскале: Дана строка текста. Слова в тексте друг от друга отделяются...

0 голосов
26 просмотров

Написать программу в паскале: Дана строка текста. Слова в тексте друг от друга отделяются одним пробелом. Удалить из строки все слова, начинающиеся и заканчивающиеся на "о".


Информатика (37 баллов) | 26 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

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
  end
end;

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.

Тестовый прогон:

Вводите строку
В это окно отлично виден и прекрасный горный ландшафт, и одинокое облако, зацепившееся за покрытую снегом вершину.
Результирующая строка: В это виден и прекрасный горный ландшафт, и одинокое облако, зацепившееся за покрытую снегом вершину.



(142k баллов)