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

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

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

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


изувер
**

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

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


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

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


mea culpa
*****

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

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


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

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


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


Гость






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


изувер
**

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

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


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

просто не могу вывести в конце сколько именно слов по сколько слогов имеет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 ] }
(чтобы не мучить себя обработкой конца строки - ты ж уверена, что слова разбиваются ТОЛЬКО пробелами, значит, признака конца строки, например, точки, не будет - к исходной строке допиши справа один пробел)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






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

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


?
***

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

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


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

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



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

Сообщение отредактировано: amega -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.

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


?
***

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

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


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


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


изувер
**

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

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


спасибо.

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

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

 





- Текстовая версия 29.11.2020 17:32
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name