1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Посмотрите, пожалуйста, какие ошибки, а то чего-то не получается Определить каков процент слов в тексте начинается на букву К. Слова разделены пробелами.
var a,k: string [100];
i,b,m,c: integer; x: real; begin writeln ('Введите текст:'); readln (S); cut:=0 S:=' ' + S; b:=length (S); for i:=1 to b do begin k:= ' ' + 'k'; if copy (a,i,2)=k then m:=m+1; end; writeln ('количество k=',m) writeln('x=', X:4:3); end.
Да, это конечно непонятно, что собственно считается слогом. В русском языке в слове столько слогов, сколько гласных. Но что получается - слово без гласных содержит 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.
Сообщение отредактировано: Shura -
--------------------
Старайтесь восполнять пробелы в области незнания! ;-D