Посмотрите, пожалуйста, какие ошибки, а то чего-то не получается
Определить каков процент слов в тексте начинается на
букву К. Слова разделены пробелами.
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.
var
a: string [100];
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);
Да и вообще, выложенная программа не скомпилируется))
А цикл надо начинать с двойки, а не с единицы, т.к. первый символ строки мы сделали пробелом.
Вот код:
СПАСИБО ОГРОМНОЕ!!!!!!!!! Если не трудно, подскажите, пожалуйста, как быть со второй задачей..
Нужно определить сколько слов в тексте содержат один слог, два слога, три слога и т.д.
Ну помогите, пожалуйста, завтра зачет, а у меня вообще никаких идей как решается задача.. ((
На вас последняя надежда... откликнитесь, pls!!!!
Тут смотря что понимается под слогом .. какие-то конкретные буквосочетания ? Сочетания одной гласной и одной согласной ? Ты бы информации дала побольше
Да, это конечно непонятно, что собственно считается слогом. В русском языке в слове столько слогов, сколько гласных. Но что получается - слово без гласных содержит 0 слогов?)))) Вобщем вот код по такому правилу. Думаю несложно будет если что изменить. Слова без гласных я сделал, как один слог.
спасибо.. а разве есть в русском языке слова без гласных?
Та в русском языке полно таких слов!!! )) Тебе для русского надо? Ну тогда все в порядке - просто поменяй в функции множество латинских на множество русских гласных, и готово. А в английском языке по-другому слога считаются... Ну, я думаю преподу сдать - это подойдет.
Заинтересовал... какие например?
Все, разобралась... Спасибо!!!
Небольшой вопросик ? А почему массив от 0 до 130?? И что мне нужно изменить, чтобы слова без гласных не считались как один слог???
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.
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}
Пробовала - не работает.. ((((
А почему массив от 0 до 130??
Ничего она не делает... вводишь строку - и ничего... ((
Эт я немного спутал... Я писал, думая, что слог - это минимум согласная+гласная, и следовательно слогов в слове может быть до 127, т.к. длина строки до 255, ну и округлил до 130. А так как мы договорились, что слогом может быть даже одна буква, то массив следует сделать аж до 255. Поменяй 130 на 255 в описании массива, и в конце программы - в цикле. А чтобы 0 слогов было в слове без гласных, убери строку "if p = 0 then p:=1;". У меня все работает! Может ты там уже намудрила что-нибудь?.. Скопируй заново из этого топика, и сделай вышеописанные изменения.
может, конечно, прога что-то и делает.. но результат не выводит... сделала пошагово, заедает на
for i:=0 to 130
do if a[i] <> 0
then WriteLn('Slov, soderzhaschih ', i, ' slogov: ', a[i], '.');
Значит, что-то меняла в самой программе... Вот что делает программа у меня:Enter string: привет стоп вперед назад
Slov, soderzhaschih 1 slogov: 1.
Slov, soderzhaschih 2 slogov: 3.
Присоединяй свой PAS-файл (не копируй сюда программу, а именно присоедини файл), будем разбираться...
выдает ошибку: Общее дисковое пространство требует для всех загружаемых файлов больше, чем на каждое сообщение или глобальный лимит. Пожалуйста, уменьшите число или размер загружаемых файлов.
хотя размер файла всего 8 байт
все работает! огромное спасибо, Shura. щас кое что исправлю и можно будет отдавать преподу))