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.
i,m: integer; x: real; begin writeln ('Введите текст:'); readln (S); S:=' ' + S; for i:=1 to length (s) do if (s[i]=' ' and s[i]=k) then m:=m+1; writeln ('количество k=',m); x:=(m/length (s))*100; writeln('%=', X:4:1); end.
Мда, ты прав, тогда может завести еще одну переменную, которая будет сообщать о количестве слов??? Например if s[i]=' ' and s[i+1]<>' ' then inc (summWord);
Да и вообще, выложенная программа не скомпилируется)) А цикл надо начинать с двойки, а не с единицы, т.к. первый символ строки мы сделали пробелом. Вот код:
Код
Var s: String; i,w,k: Byte;
Begin WriteLn('Enter string: '); ReadLn(s);
k:=0; w:=0; s:=' '+s;
for i:=2 to length(s) do if (s[i-1] = ' ')and(s[i] <> ' ') then begin Inc(w); if s[i] = 'k' then Inc(k) end;
Write((k*100/w):0:1, ' percents.'); ReadLn End.
--------------------
Старайтесь восполнять пробелы в области незнания! ;-D
СПАСИБО ОГРОМНОЕ!!!!!!!!! Если не трудно, подскажите, пожалуйста, как быть со второй задачей.. Нужно определить сколько слов в тексте содержат один слог, два слога, три слога и т.д.
Тут смотря что понимается под слогом .. какие-то конкретные буквосочетания ? Сочетания одной гласной и одной согласной ? Ты бы информации дала побольше
--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
Да, это конечно непонятно, что собственно считается слогом. В русском языке в слове столько слогов, сколько гласных. Но что получается - слово без гласных содержит 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
Та в русском языке полно таких слов!!! )) Тебе для русского надо? Ну тогда все в порядке - просто поменяй в функции множество латинских на множество русских гласных, и готово. А в английском языке по-другому слога считаются... Ну, я думаю преподу сдать - это подойдет.
--------------------
Старайтесь восполнять пробелы в области незнания! ;-D
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], '.');
Ничего тут не пропущено... F это Boolean, все в порядке... Ты бы запустила программу сначала, потом - критикуй...
Цитата
чтобы слова без гласных не считались как один слог
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}