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

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

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

 
 Ответить  Открыть новую тему 
> Задача на строки
сообщение
Сообщение #1





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

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


Никак не могу создать работающую версию программы:
Найти в предложении слова не длинее 6 букв и чтобы в них было минимум 30% гласных букв.

Помогите, кто может!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






To: Array
Что именно не получается? Определить, что длина слова не превышает 6 букв, или что найденное слово содержит минимум 30% гласных?

Вот тут есть программа, определяющая длину слов текста, чуть-чуть дополнить и будет то, что надо...
Самое короткое слово в строке

Кстати, как именно разделяются слова? Только пробелы?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


volvo,
не получается та часть, где нужно определить слова с 30% гласных и никак не могу правильно записать цикл, чтобы он выдавал не только одно слово, но и проверял затем остальные.
В условии не записано каким образом могут разделяться слова, но я думаю для простоты сойдет разделение только пробелами.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






По ссылке ходил? Там более простая версия программы, вот то, что тебе нужно:
const
glas_set = ['a', 'e', 'o', 'i', 'u'];
var
s: string;
curr_len, start: byte;

i, j, glas: integer;
begin
i := 1;
s := 'one two xx three four ytyoooooo';
while i <= length(s) do begin

while (s[i] = ' ') and (i <= length(s)) do inc(i);

curr_len := 0;
while (s[i] <> ' ') and (i <= length(s)) do begin
inc(i); inc(curr_len);
end;

if curr_len <= 6 then begin
glas := 0;
for j := i - curr_len to pred(i) do
if s[j] in glas_set then inc(glas);

if (glas / curr_len) > 0.3 then
writeln( 100 * (glas / curr_len):5:0, '% - ',
copy(s, i - curr_len, curr_len) )
end;
end;

end.

Если нужна кириллица, поменяй соответствующее множество, я проверял для латиницы.

P.S. В следующий раз, чтобы не быть голословным, и нам не приходилось писать с нуля, приводи свою версию программы, так и мы будем знать, что ты что-то пытался сделать, да и быстрее поправить будет :yes:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


volvo,
Ok!!
Спасибо тебе ОГРОМНОЕ за помощь!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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