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

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

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

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





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

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


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

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


Гость






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

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

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





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

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


volvo,
не получается та часть, где нужно определить слова с 30% гласных и никак не могу правильно записать цикл, чтобы он выдавал не только одно слово, но и проверял затем остальные.
В условии не записано каким образом могут разделяться слова, но я думаю для простоты сойдет разделение только пробелами.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.10.2005 21:47
Сообщение #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:
 К началу страницы 
+ Ответить 
Array
сообщение 28.10.2005 22:21
Сообщение #5





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

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


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

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

 



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