Удалить из строки слова, содержащие повторяющиеся символы - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Дана строка, состоящая из слов. Удалить из строки слова, содержащие повторяющиеся символы.

Решение задачи: «Удалить из строки слова, содержащие повторяющиеся символы»

textual
Листинг программы
var
  s: string;
  i,p: integer;
  letters: set of char;
  flag: boolean;
 
begin
  readln(s);
  letters:=[];
  flag:=false;
  p:=length(s);
  for i:=p downto 0 do begin
    if (i=0) or (s[i]=' ') then begin
      if flag then delete(s,i+1,p-i);
      p:=i;
      letters:=[];
      flag:=false;
    end else begin
      if s[i] in letters then flag:=true;
      letters:=letters+[s[i]];
    end;
  end;
  writeln(s);
  readln;
end.

Объяснение кода листинга программы

  1. В начале кода объявляются переменные: s - строка, i, p - целые числа, letters - множество символов, flag - логическое значение.
  2. Строка считывается из стандартного ввода.
  3. Создается пустое множество letters и устанавливается значение флага flag в false.
  4. Переменная p устанавливается равной длине строки s.
  5. Запускается цикл for, который проходит по каждому символу строки s, начиная с индекса p и до индекса 0 (включая 0, но не включая сам символ 0).
  6. Внутри цикла проверяется условие: если текущий символ - первый или пробельный, то выполняется следующая часть условия: если флаг flag равен true, то удаляется символ из строки s, начиная с индекса i+1 и до конца строки (p-i), после чего переменная p обновляется до индекса i, множество letters очищается и флаг flag устанавливается в false. Если условие не выполняется, то текущий символ добавляется в множество letters.
  7. После завершения цикла for выводится исходная строка s.
  8. Запускается цикл чтения строк, который завершается при нажатии клавиши Enter.

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы