В алфавитном порядке вывести на печать все строчные буквы латинского алфавита, входящие в каждое слово - Turbo Pascal
Формулировка задачи:
Помогите пожалуйста с программой)
Дано предложение, слова которого отделены друг от друга запятыми. В алфавитном порядке
вывести на печать все строчные буквы латинского алфавита, входящие в каждое слово.
Решение задачи: «В алфавитном порядке вывести на печать все строчные буквы латинского алфавита, входящие в каждое слово»
textual
Листинг программы
uses crt;
const lb=['a'..'z'];
type mnoz=set of char;
procedure Mnozestvo(s:string;var m:mnoz);
var i:byte;
begin
m:=[];
for i:=1 to length(s) do
if s[i] in lb then m:=m+[s[i]];
end;
var s,s1:string;
m1,mi:mnoz;
i:byte;
c:char;
begin
clrscr;
writeln('Введите предложение, слова которого отделены запятыми:');
readln(s);
s:=s+',';{добавим запятую в конец}
while pos(',,',s)>0 do {удалим лишние запятые}
delete(s, pos(',,',s),1);
s1:=copy(s,1,pos(',',s));
Mnozestvo(s1,m1); {составим множество из бккв первого слова}
delete(s,1,pos(',',s));{удалим его}
while pos(',',s)>0 do{пока есть запятые}
begin
s1:=copy(s,1,pos(',',s)-1);{берем следующее слово}
Mnozestvo(s1,mi);{составляем множетво}
m1:=m1*mi;{получаем пересечение существующего множества и нового}
delete(s,1,pos(',',s));{удаляем слово}
end;
if m1=[] then{если множество пустое}
begin
write('Указанных по условию букв нет!');
readln;
exit;
end;
writeln('Множество указанных по условию букв:');
for c:='a' to 'z' do
if c in m1 then write(c,' ');
readln
end.
Объяснение кода листинга программы
- В первой строке кода используется библиотека crt, которая является стандартной для языка Turbo Pascal.
- В следующей строке определяется константа lb, которая содержит все строчные буквы латинского алфавита от 'a' до 'z'.
- Затем определяется тип данных mnoz, который представляет собой множество символов.
- В процедуре Mnozestvo принимается строка s и переменная m типа mnoz. Внутри процедуры создается пустое множество m и происходит проверка каждого символа в строке s. Если символ является строчной буквой, то он добавляется в множество m.
- Далее определяются переменные s, s1, m1 и mi типа string и mnoz.
- В цикле while происходит обработка каждого слова в предложении. Слово отделяется запятой, затем удаляются лишние запятые, и остается только первое слово. Это слово передается в процедуру Mnozestvo, и результат сохраняется в переменной m1.
- Затем происходит пересечение множества m1 с каждым следующим словом, которое обрабатывается в цикле. Результат сохраняется в переменной m1.
- После обработки всех слов происходит проверка, пустое ли множество m1. Если это так, выводится сообщение об отсутствии указанных по условию букв.
- Если множество m1 не пустое, выводится его содержимое в виде букв от 'a' до 'z'.
- Конец программы.