Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Array
Никак не могу создать работающую версию программы:
Найти в предложении слова не длинее 6 букв и чтобы в них было минимум 30% гласных букв.

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

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

Кстати, как именно разделяются слова? Только пробелы?
Array
volvo,
не получается та часть, где нужно определить слова с 30% гласных и никак не могу правильно записать цикл, чтобы он выдавал не только одно слово, но и проверял затем остальные.
В условии не записано каким образом могут разделяться слова, но я думаю для простоты сойдет разделение только пробелами.
volvo
По ссылке ходил? Там более простая версия программы, вот то, что тебе нужно:
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
volvo,
Ok!!
Спасибо тебе ОГРОМНОЕ за помощь!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.