Строки, записи, множества - Pascal ABC

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

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

Пусть дан текст, заканчивающийся точкой. Текст состоит из слов, разделенных пробелами. Слова представляют собой произ- вольную последовательность символов, отличных от пробела. На- печатайте все слова, которые состоят из тех же литер, что и по- следнее слово текста. Прошу помощи

Решение задачи: «Строки, записи, множества»

textual
Листинг программы
var s,sl:string;
    i:integer;
    mps,msl:set of char;
    f:boolean;
begin
 write('BBequTe cTpoky:');readln(s);
 i:=length(s)-1;
 mps:=[];
 while s[i]<>' ' do begin include(mps,s[i]); dec(i); end;
 i:=1;
 while i<=length(s) do
  if (s[i]=' ')and(s[i+1]=' ') then delete(s,i+1,1)
                               else inc(i);
 f:=false;
 while pos(' ',s)<>0 do
  begin
   msl:=[];
   sl:=copy(s,1,pos(' ',s)-1);
   for i:=1 to length(sl) do include(msl,sl[i]);
   if mps=msl then begin writeln(copy(s,1,pos(' ',s)-1)); f:=true end;
   delete(s,1,pos(' ',s));
  end;
 if not f then writeln('---')
end.

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

  1. Создаются переменные s, sl и mps типа string, i типа integer и msl типа set of char. Также создается переменная f типа boolean.
  2. Выводится строка BBequTe cTpoky:.
  3. Переменная i устанавливается равной длине переменной s минус 1.
  4. Создается пустое множество mps.
  5. Запускается цикл while, который выполняется до тех пор, пока элемент s[i] не станет равным пробелу и следующий элемент s[i+1] также не станет равным пробелу. В этом случае элемент s[i] включается в множество mps. Десятичный оператор dec уменьшает значение переменной i на 1.
  6. Если условие if (s[i]=' ')and(s[i+1]=' ') выполняется, то с помощью функции delete удаляется элемент s[i+1] из строки s.
  7. Переменная i устанавливается равной 1.
  8. Запускается цикл while, который выполняется до тех пор, пока в строке s есть пробелы.
  9. Создается пустое множество msl.
  10. Копируется подстрока s, начиная с первого символа и заканчивая символом в позиции pos(' ',s)-1.
  11. Для каждого символа в подстроке sl, включая первый символ, включается символ в множество msl.
  12. Проверяется равенство множеств mps и msl. Если они равны, то выводится копия подстроки s, начиная с первого символа и заканчивая символом в позиции pos(' ',s)-1. Переменная f устанавливается в значение true.
  13. Символ в позиции pos(' ',s)-1 удаляется из строки s.
  14. Если не выполняется условие if not f, то выводится строка ---.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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