program laba_6; uses crt; var str : string; {переменная типа "строка"} s,h : char; {переменные типа "символ"} m : byte; {мааааленькая переменная, туда будем записывать максимальную длину} i,j : byte; {переменные для счётчиков цикла} n : boolean; {переменная, имеющая тока два значения, или true (истина) или false (ложь) удобна для использования в условиях if} stroki : array [1..200] of string; {задаём вектор, элементами которого являюца строки} begin clrscr; write ('stroka: '); readln (str); write ('symvol: '); readln (s); j:=0; n:=false; {присваиваем значение false, сюда будим писать, началось ли новое слово (тоесть предыдущий симвом был разделителем) или мы продолжаем уже начатое} for i:=1 to length (str) do {цикл от 1 до конца строки, функция length (str) возвращает длину строки str} begin h:=str[i]; {присваиваем i символ строки переменной h} if (h<>' ')and(h<>'/')and(h<>'?')and(h<>'')and(h<>'.')and(h<>',')and(h<>'<') and(h<>':')and(h<>'>')and(h<>';')and(h<>'"')and(h<>' '' ') and (h<>'!')and(h<>'%')and(h<>'*') {проверяем этот символ, является ли он разделителем} then begin if not n then {если прошлый символ был разделительным} begin j:=j+1; {увеличиваем счётчик считанных слов на 1} n:=true; {пишем в n што началося новое слово} end; stroki[j]:=stroki[j]+str[i]; {к уже считанному слову добавляем новый символ} end else n:=false; {если символ считанный аказался разделителем, пишем в n што слово кончилось} end; m:=0; {максимальную длину пишем 0} for i:=1 to j do {в этом цикле ищем максимальную длину слова, начинающегося с заданного символа} if (stroki [i] [1] = s) and (length(stroki [i])>m ) then m:=length(stroki [i]); writeln (m); {выводим максимальную длину} {for i:=1 to j do (* если раскомментировать этот цикл, то будут выводица все полученные слова*) writeln (stroki [i]); } readln; end.