Дан текст. Напечатать все слова, которые входят в текст по одному разу — Pascal(Паскаль)

Program PascalGuru;

procedure delPROB(var s: string); { функция удаления пробела }
var
  i: integer;
begin
  i := 1;
  repeat
    if copy(s, i, 2) = '  ' then
      delete(s, i, 1)
    else
      inc(i);
  until i > length(s);
end; { ---конец функции удаления пробела }

{ ---------------------------------- }
var
  s, x: string; { ниже идёт объявление переменных }
  i, j, p, n: integer;
  A: array [1 .. 50] of string;
  b: boolean;

  { ---------------------------------- }
begin
  write('Vvedite stroky slov (text) otdelennymi probelami: ');
  readln(s); { считываем исходную строку }
  delPROB(s); { удаляем лишние пробелы }
  j := 0; { обнуляем счётчик кол-ва слов }
  repeat { начало  цикла преобразования строки слов - в массив строк }
    inc(j); { увеличиваем счётчик кол-ва слов на +1 }
    p := pos(' ', s); { находим позицию пробела }
    x := copy(s, 1, p - 1); { вычисляем текущее слово }
    if p = 0 then
      x := s; { проверяем - состоит ли строка из 1 слова }
    A[j] := x; { текущее слово записываем в массив }
    delete(s, 1, p); { удаляем это слово из строки }
  until p = 0; { --- конец  цикла преобразования строки слов - в массив строк }
  n := j;

  writeln;
  writeln('Nepovtoryaiuciesia slova:');
  writeln('_________________________');

  for i := 1 to n do
  begin
    b := true;
    for j := 1 to n do
      if (i <> j) and (A[j] = A[i]) then
        b := false;
    if b then
      writeln(A[i], ' ');
  end;

  readln;

end.

Leave a Comment

69 − = 60