Язык Pascal ABC Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых...

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

Язык Pascal ABC
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами - не менее одного пробела, за последним словом - точка. Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству: в слове есть повторяющиеся буквы
На турбе отмечу лучший ответ.


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

Var
  S, tmp, buf, firstW: string;
  i, j, k, p, ii: integer;
  ch: char;

begin
  S := 'privit    kak   dela  putin    znanija   test  proverka   privit  teste.';
  firstW := copy(S, 1, pos(' ', S) - 1);
  writeln('Исходная строка: ', S);
  writeln('Первое слово = ', firstW);
  i := 0;
  while (S[i] <> '.') do
  begin
    i := i + 1;
    if (S[i] <> ' ') then
    begin
      while ((S[i] <> ' ') and (i < Length(S))) do
      begin
        tmp := tmp + S[i];
        i := i + 1;
      end;
      buf := tmp;
      p := 0;
      ii := 1;
      while ii <= Length(buf) do<br>      begin
        k := 0;
        ch := buf[ii];
        for j := Length(buf) downto ii do
          if buf[j] = ch then
          begin
            k := k + 1;
            delete(buf, j, 1);
          end;
        if k > 1 then
          p := 1;
      end;
      if ((p <> 0) and (tmp <> firstW)) then
        writeln(tmp);
      tmp := '';
    end;
  end;
  readln;
end.


image
(9.4k баллов)