![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Array |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Никак не могу создать работающую версию программы:
Найти в предложении слова не длинее 6 букв и чтобы в них было минимум 30% гласных букв. Помогите, кто может!! |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
To: Array
Что именно не получается? Определить, что длина слова не превышает 6 букв, или что найденное слово содержит минимум 30% гласных? Вот тут есть программа, определяющая длину слов текста, чуть-чуть дополнить и будет то, что надо... Самое короткое слово в строке Кстати, как именно разделяются слова? Только пробелы? |
Array |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
volvo,
не получается та часть, где нужно определить слова с 30% гласных и никак не могу правильно записать цикл, чтобы он выдавал не только одно слово, но и проверял затем остальные. В условии не записано каким образом могут разделяться слова, но я думаю для простоты сойдет разделение только пробелами. |
volvo |
![]()
Сообщение
#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 |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
volvo,
Ok!! Спасибо тебе ОГРОМНОЕ за помощь!! |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 18:59 |