Строки - Pascal ABC (14175)

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

Помогите пожалуйста с задачей. В произвольном тексте содержащем не более 10 строк в каждой строке не более 80 символов выбрать и напечатать слова по данному образцу *#*#* где * - СОГЛАСНАЯ # - ГЛАСНАЯ) Вот мой код. Не могу сделать цикл.
program n3;
const 
sogl = ['Й','й','Б','б','В','в','Г','г','Д','д','Ж','ж','З','з','К','к','Л','л','М','м','Н','н','П','п','Р','р','С','с','Т','т','Ф','ф','Х','х','Ч','ч','Ш','ш','Ц','ц','Щ','щ'];
glasn = ['А','а','Е','е','Ё','ё','И','и','О','о','У','у','Ы','ы','Э','э','Ю','ю','Я','я'];
var
    fullstr,s,s1: string;
    space,i,i1: integer;
    
begin
    writeln('String:');
    readln(fullstr);
 
    while fullstr[1] = ' ' do
        delete(fullstr,1,1);
    while fullstr[length(fullstr)] = ' ' do
        delete(fullstr,length(fullstr),1);
    while pos('  ',fullstr) <> 0 do
        delete(fullstr,pos('  ',fullstr),1);
 
    s1 := '';
        while fullstr <> '' do begin
        space := pos(' ',fullstr);
        if space = 0 then
            space := length(fullstr) + 1;
        s := copy(fullstr,1,space-1);
        for i:=1 to length(s) do
        i1:=2*i-1;
        //i2:=2*i;
        begin
        if s[i] in sogl// and s[i2]=glasn
         then
            s1:= s1 + s + ' ';
            end;
        delete(fullstr,1,space);
    end;
 
 
    writeln('Words: ',s1);
 
readln
end.


textual

Код к задаче: «Строки - Pascal ABC (14175)»

program n3;
const
sogl = ['Й','й','Б','б','В','в','Г','г','Д','д','Ж','ж','З','з','К','к','Л','л','М','м','Н','н','П','п','Р','р','С','с','Т','т','Ф','ф','Х','х','Ч','ч','Ш','ш','Ц','ц','Щ','щ'];
glasn = ['А','а','Е','е','Ё','ё','И','и','О','о','У','у','Ы','ы','Э','э','Ю','ю','Я','я'];
rz=[' ',',','.','?','!'];
n=1;
type strk=string[80];
function maska(s:strk):boolean;
begin
maska:=(length(s)=5)and(s[1] in sogl)and(s[3] in sogl)
and(s[5] in sogl)and(s[2] in glasn)and(s[4] in glasn);
end;
var  fullstr,s,s1: string[80];
     i,j,k,q: integer;
begin
q:=0;
for i:=1 to n do
 begin
   writeln('Введите строку на русском языке до 80 символов:');
   readln(fullstr);
   j:=1;
   while(j<=length(fullstr)) do
   if not(fullstr[j] in rz)and((j=1)or(fullstr[j-1] in rz))then
    begin
     s:='';
     k:=j;
     while(k<=length(fullstr))and not(fullstr[k] in rz) do
      begin
       s:=s+fullstr[k];
       k:=k+1;
      end;
     if maska(s) then
      begin
       write(' ',s);
       q:=1;
      end;
    j:=j+length(s);
   end
  else j:=j+1;
 end;
 if q=0 then write('Нет слов, соответствующих маске');
 end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

14   голосов, оценка 3.786 из 5

Источник
Похожие ответы