IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> строки, количество слов с разным кол-ом слогов
кучаТрупов
сообщение 19.03.2009 22:12
Сообщение #1


изувер
**

Группа: Пользователи
Сообщений: 88
Пол: Женский
Реальное имя: ann

Репутация: -  1  +


задача: сколько слов в тексте имеет 1 слог,2 слога,3 слога и т.д.(кол-во слогов в слове совпадает с кол-ом гласных)

в Фак'е было только про *сколько раз заданное слово встречаетсся в тексте*
и больше я не нашла что бы мне помогло.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Unconnected
сообщение 19.03.2009 22:30
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Сначала разбиваем на слова.
Можно задать множество, состоящее из гласных, потом проходить по словам, и если буква оказывается в множестве, то увеличиваем счётчик слогов.

Сообщение отредактировано: Unconnected - 19.03.2009 22:32


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.03.2009 22:31
Сообщение #3


Гость






Для начала надо разбить текст на слова, и для каждого слова уже пробегать по всем буквам и считать слоги...
 К началу страницы 
+ Ответить 
кучаТрупов
сообщение 19.03.2009 22:39
Сообщение #4


изувер
**

Группа: Пользователи
Сообщений: 88
Пол: Женский
Реальное имя: ann

Репутация: -  1  +


ну текст уже дан словами. его разбивать не надо же. в условии- слова разделены пробелами.
и слоги я посчитать могу думаю)

просто не могу вывести в конце сколько именно слов по сколько слогов имеет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amega
сообщение 19.03.2009 22:41
Сообщение #5


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


- береш создаеш множество из гласных букв
- потом нашол первое слово в тексте
- проверяш по букво гласные, если гласная то i:=i+1;
- потом a[i]:=a[i]+1;

на выходе ми будем иметь масив где
в а1 будет содержатся количество 1 слог
в а2 будет содержатся количество 2 слог

тоесть чтото такого

const
glas=['А','а','Е','е','О','о','И','и','У','у','Ы','ы','Э','э','Я','я','Ю','ю'];
var
Mas : array [1..20] of integer;
ch:char;
i,k:integer;
s:string;
begin
{инициализация массива}

{цикл по тесту}
...
{получаем в s 1 слово}
k:=0;
for i:=1 to length(s) do
begin
ch:=s[i];
if (ch in glas) then k:=K+1;
end;
a[k]:=a[k]+1;
{конец цикла}

{вывод}
end;



хех пока писал текст уже меседжев понаписовали))

Сообщение отредактировано: amega - 19.03.2009 22:42
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.03.2009 23:20
Сообщение #6


Гость






Цитата
ну текст уже дан словами. его разбивать не надо же.
Это тебе только кажется... Не надо было бы разбивать - если б текст был дан в виде массива слов. Вот тогда достаточно было бы просто пробежаться по всему массиву, и посчитать то, что тебе нужно...

Кроме всего прочего - задание надо указывать полностью, в первом посте не было ничего сказано о том, что разделяются слова в тексте только пробелами. Если ты в этом уверена - все еще проще:

count := 0;
for i := 1 to length(s) do begin
if s[ i ] in glas then inc(count)
else
if s[ i ] = ' ' then begin
inc(mas[count]);
count := 0;
end
end;
{ mas заполнен, количество слов с I слогами хранится в mas[ i ] }
(чтобы не мучить себя обработкой конца строки - ты ж уверена, что слова разбиваются ТОЛЬКО пробелами, значит, признака конца строки, например, точки, не будет - к исходной строке допиши справа один пробел)
 К началу страницы 
+ Ответить 
amega
сообщение 19.03.2009 23:32
Сообщение #7


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


Цитата
к исходной строке допиши справа один пробел)


count := 0;
for i := 1 to length(s) do
begin
if s[ i ] in glas then inc(count)
else
if s[ i ] = ' ' then
begin
inc(mas[count]);
count := 0;
end
if i=length(s) then inc(mas[count]);
end;


теперь не нада

Сообщение отредактировано: amega - 19.03.2009 23:36
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.03.2009 23:39
Сообщение #8


Гость






Хм... кучаТрупов, вопрос на засыпку: а если у тебя вообще нет гласных в слове - тогда что? Первое слово данного поста уже даст тебе 0 слогов (гласных-то нет), да мало ли еще таких слов в русском-то языке...

Цитата
теперь не нада
Лучше уж добавить пробел, чем добавлять вычисление длины строки (причем неоднократное).
 К началу страницы 
+ Ответить 
amega
сообщение 19.03.2009 23:52
Сообщение #9


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


например
Хм кучаТрупов вопрос на засыпку

тоесть получается на первом пробеле inc(а[0]) ?
тогда оно при массиве
array [1..20] of integer;
видаст ошибку ...
тогда
array [0..20] of integer;



и тогда получится а[0] содержит количество слов без гласных, а выводить тогда с первого элемента

Сообщение отредактировано: amega - 19.03.2009 23:53
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.03.2009 0:10
Сообщение #10


Гость






А слово "Хм" ты просто вышвырнул из предложения, да? Ну, в принципе, если такой алгоритм подсчета слогов устраивает автора темы, то надо сделать чуть-чуть по-другому:

const
size = 20;
glas = ['А', 'а', 'Е', 'е', 'О', 'о', 'И', 'и', 'У', 'у', 'Ы', 'ы', 'Э', 'э', 'Я', 'я', 'Ю', 'ю'];

var
s: string;
i, count: integer;
is_space: boolean;
mas: array[0 .. size] of integer;

begin
s := 'Хм кучаТрупов вопрос на засыпку в этом предложении ';
count := 0; is_space := true;

for i := 1 to length(s) do begin

if s[i] = ' ' then begin
if not is_space then inc(mas[count]);
count := 0; is_space := true;
end
else begin
is_space := false;
if s[i] in glas then inc(count);
end

end;
for i := 0 to size do
if mas[i] > 0 then writeln('Слогов: ', i, ' -> слов: ', mas[i]);
end.

Тут уже, кстати, не особо и важно, чем разделяются слова, одним пробелом или несколькими. Да и пробелами ли вообще (можно заменить сравнение с пробелом на проверку вхождения в набор разделителей)...
 К началу страницы 
+ Ответить 
amega
сообщение 20.03.2009 0:24
Сообщение #11


?
***

Группа: Пользователи
Сообщений: 283
Пол: Мужской

Репутация: -  4  +


а инициализировать масив? ведь там может быть мусор...
на этом месте может выдать ошибку в виде непонятных циферок
 if mas[i] > 0 then ... 


Сообщение отредактировано: amega - 20.03.2009 0:25
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
кучаТрупов
сообщение 20.03.2009 8:08
Сообщение #12


изувер
**

Группа: Пользователи
Сообщений: 88
Пол: Женский
Реальное имя: ann

Репутация: -  1  +


спасибо.

ответ на вопрос на засыпку-- нет гласных-нет слогов.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.06.2025 3:59
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"