Да, это конечно непонятно, что собственно считается слогом. В русском языке в слове столько слогов, сколько гласных. Но что получается - слово без гласных содержит 0 слогов?)))) Вобщем вот код по такому правилу. Думаю несложно будет если что изменить. Слова без гласных я сделал, как один слог.
Код
Var
a: Array [0..130] of Byte; {i-й элемент массива содержит кол-во слов, которые состоят из i слогов.}
s,w: String; {s - вся строка, w - очередное слово}
i,n: Byte;
f: Boolean; {прибавлять ли к w очередную букву}
Function Slogs(s: String): Byte; {Возвращает кол-во слогов}
var
i,p: Byte;
begin
p:=0;
for i:=1 to length(s)
do if s[i] in ['e','y','u','i','o','a']
then Inc(p);
if p = 0
then p:=1;
Slogs:=p
end; {Slogs}
Begin
Write('Enter string: ');
ReadLn(s);
s:=' ' + s;
w:='';
f:=false;
for i:=2 to length(s)
do begin
if (s[i] <> ' ')and(s[i-1] = ' ')
then f:=true;
if ((s[i] = ' ')or(i = length(s)))and(f)
then begin
f:=false;
Inc(a[slogs(w)]);
w:=''
end;
if f
then w:=w+s[i]
end;
for i:=0 to 130
do if a[i] <> 0
then WriteLn('Slov, soderzhaschih ', i, ' slogov: ', a[i], '.');
ReadLn
End.