Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача на строки

Автор: Array 29.10.2005 0:45

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

Помогите, кто может!!

Автор: volvo 29.10.2005 1:15

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

Вот тут есть программа, определяющая длину слов текста, чуть-чуть дополнить и будет то, что надо...
http://forum.pascal.net.ru/index.php?showtopic=6662&view=findpost&p=48993

Кстати, как именно разделяются слова? Только пробелы?

Автор: Array 29.10.2005 1:23

volvo,
не получается та часть, где нужно определить слова с 30% гласных и никак не могу правильно записать цикл, чтобы он выдавал не только одно слово, но и проверял затем остальные.
В условии не записано каким образом могут разделяться слова, но я думаю для простоты сойдет разделение только пробелами.

Автор: volvo 29.10.2005 1:47

По ссылке ходил? Там более простая версия программы, вот то, что тебе нужно:

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 29.10.2005 2:21

volvo,
Ok!!
Спасибо тебе ОГРОМНОЕ за помощь!!