Строки, записи, множества - 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.
Объяснение кода листинга программы
- Создаются переменные s, sl и mps типа string, i типа integer и msl типа set of char. Также создается переменная f типа boolean.
- Выводится строка
BBequTe cTpoky:
. - Переменная i устанавливается равной длине переменной s минус 1.
- Создается пустое множество mps.
- Запускается цикл while, который выполняется до тех пор, пока элемент s[i] не станет равным пробелу и следующий элемент s[i+1] также не станет равным пробелу. В этом случае элемент s[i] включается в множество mps. Десятичный оператор dec уменьшает значение переменной i на 1.
- Если условие if (s[i]=' ')and(s[i+1]=' ') выполняется, то с помощью функции delete удаляется элемент s[i+1] из строки s.
- Переменная i устанавливается равной 1.
- Запускается цикл while, который выполняется до тех пор, пока в строке s есть пробелы.
- Создается пустое множество msl.
- Копируется подстрока s, начиная с первого символа и заканчивая символом в позиции pos(' ',s)-1.
- Для каждого символа в подстроке sl, включая первый символ, включается символ в множество msl.
- Проверяется равенство множеств mps и msl. Если они равны, то выводится копия подстроки s, начиная с первого символа и заканчивая символом в позиции pos(' ',s)-1. Переменная f устанавливается в значение true.
- Символ в позиции pos(' ',s)-1 удаляется из строки s.
- Если не выполняется условие if not f, то выводится строка
---
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д