![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Sqrin |
![]()
Сообщение
#1
|
Гость ![]() |
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами – запятая или не менее одного пробела, за последним словом - точка.
Напечатать те слова последовательности, которые отличны от последнего слова и удовлетворяют следующему свойству: - в слове гласные чередуются с согласными; Напечатать те слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу: - если слово нечетной длины, то удалить его среднюю букву. напишите плиз |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата(Sqrin @ 11.05.05 0:05) напишите плиз Помочь - пожалуйста, но писАть полностью :no: Хоть что-нибудь уже начато? Для начала можно прочитать здесь: FAQ: Множества, чтобы иметь представление о том, с чем придется иметь дело... |
asCOOLs |
![]()
Сообщение
#3
|
Гость ![]() |
ето понятно ... вот тока определение согласные или не согласные ?
сделать отдельный блок данных с забитыми гласными и проверять? что не соглас то гласные ? или как лучше оформиь? |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
const |
Sqrin |
![]()
Сообщение
#5
|
Гость ![]() |
как задатьмножество я понимаю
а вот.... Напечатать те слова последовательности, которые отличны от последнего слова и удовлетворяют следующему свойству: - в слове гласные чередуются с согласными; Напечатать те слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу: - если слово нечетной длины, то удалить его среднюю букву сам алгоритм првореки не могу накатать |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата(Sqrin @ 15.06.05 9:19) Напечатать те слова последовательности, которые отличны от последнего слова Ну, для этого допустим надо разбивать строку на слова, это тоже уже было: FAQ: Строки А потом вот так: Count := GetWords(s, arr, []); Цитата(Sqrin @ 15.06.05 9:19) если слово нечетной длины, то удалить его среднюю букву Элементарно:If odd(length(s)) then delete(s, succ(length(s) div 2), 1); |
Sqrin |
![]()
Сообщение
#7
|
Гость ![]() |
о елки .. оболдеть... что то я запутолся...
ксати насчет katrin это девушка из соседнией группы.... Program GlasSogas_lol; Readln(Stroka); ето вроде начало... как терь сюда прикрипить разбиение строки по словам? |
Archon |
![]()
Сообщение
#8
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
1. не 50 символов в строке, а 50 слов. Поставь просто string.
2. создай wrds : array [1..50] of string[8]; 3. загоняй слова в массив. Перебирай все символы(при этом wrds[j]:=wrds[j]+Stroka[i], i - счётчик цикла, j - счётчик слов), если символ не в множестве гласных и не в множестве согласных, значит разделитель(j++ :D ). добавлено: Начало должно выглядеть так Код Uses crt; Const Glas = ['A','E','I','O','U','Y']; Sogl = ['A'..'Z'] - Glas; Var S : string; words : array [1..50] of string[8]; I,j : integer; old : char; Begin ClrScr; Write('Введите строку : '); Readln(S); old := ' '; {Тута пробел} j := 1; {Первое слово} For i := 1 to length(S) do {Сканируем строку} Begin if UpCase(S[i]) in Sogl + Glas then words[j] := words[j] + S[i]{если буква, добавляем к текущему слову} else if UpCase(old) in Sogl + Glas then Inc(j);{Если не буква, а предыдущий символ - буква, увеличиваем номер слова} old := S[i]; {Сохраняем символ, на следующем шаге он станет предыдущим} End; Сообщение отредактировано: Archon - 15.06.2005 14:41 -------------------- Close the World...txeN eht nepO
|
Malice |
![]()
Сообщение
#9
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если я все правильно понял, то 50 слов * (8 символов +1 разделитель) = 450 символов максимум. Стрингом никак
![]() |
klem4 |
![]()
Сообщение
#10
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата(Malice @ 16.06.05 14:03) Если я все правильно понял, то 50 слов * (8 символов +1 разделитель) = 450 символов максимум. Стрингом никак ![]() что значит ? программа, описаная выше, видишь ? там объявлен массив строк по 8 символов так что никаких проблем. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Malice |
![]()
Сообщение
#11
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(klem4 @ 16.06.05 14:07) что значит ? программа, описаная выше, видишь ? там объявлен массив строк по 8 символов так что никаких проблем. Массив заполняется при вводе ? Нет. Там readln (s). |
Archon |
![]()
Сообщение
#12
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
:D :D :D :D :D :D :D
Можно S : string; заменить на S : array [1..450] of char; только вводить сложнее. И вообще, нефиг придираться, там ещё написано: Цитата между соседними словами – запятая или не менее одного пробела Если пробелов ставить можно сколько угодно, нам придётся безразмерную строку делать что-ли? <_< -------------------- Close the World...txeN eht nepO
|
Malice |
![]()
Сообщение
#13
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(Archon @ 16.06.05 14:23) Если пробелов ставить можно сколько угодно, нам придётся безразмерную строку делать что-ли? <_< Зря ты так. Может в этом и суть ![]() Придется заполнять массив при вводе, используя что-то типа RLe компресии ![]() |
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата(Malice @ 16.06.05 14:38) Может в этом и суть ![]() Что именно КОНКРЕТНО описано? Я например виже только то, что есть ограничение на длину слова... С остальным никаких проблем нет, но если тебе так хочется поумничать, то просто напиши свою функцию ввода строки посимвольно... 10 минут работы вместе с отладкой... В чем проблемы? |
klem4 |
![]()
Сообщение
#15
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Можно вводить сразу массив слов :
uses crt; немного лагает, надо поправить Сообщение отредактировано: klem4 - 16.06.2005 15:02 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Archon |
![]()
Сообщение
#16
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да ну вас... Мы же с Malice пошутили... :p2:
У нас для этого есть раздел "ЮМОР"... А сюда люди когда приходят, им не до шуток... ![]() Да, сэр, так точно, сэр! ![]() Сообщение отредактировано: Archon - 16.06.2005 16:45 -------------------- Close the World...txeN eht nepO
|
klem4 |
![]()
Сообщение
#17
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Не уверен что отрабатывает полностью правильно, так что не бейте , здесь вариант с фиксированным числом записей, взгляните :
uses crt; если надо, можно сделать такойже ввод, только без фиксированного числа последовательностей Сообщение отредактировано: klem4 - 16.06.2005 19:08 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Guest |
![]()
Сообщение
#18
|
Гость ![]() |
Цитата(volvo @ 16.06.05 14:55) Что именно КОНКРЕТНО описано? Я например виже только то, что есть ограничение на длину слова... С остальным никаких проблем нет, но если тебе так хочется поумничать, то просто напиши свою функцию ввода строки посимвольно... 10 минут работы вместе с отладкой... В чем проблемы? Нежнее, volvo, нежнее. Работа программиста приучает к буквоедству, если в задании возможны разночтения - я всегда уточняю. Эти цифры просто режут глаз. Почему именно 50, а на пример не 10 ? Сложнее программа от этого не становится, а за 255 выталкивает. И окончание ввода конкретным символом тоже подводит к посимвольному вводу (это к until ch='.'). И ни каких проблем в этом нет. Говорю-что думаю. Ни каких шуток - все серьезно. |
volvo |
![]()
Сообщение
#19
|
Гость ![]() |
Цитата(klem4 @ 16.06.05 16:35) Не уверен что отрабатывает полностью правильно Вот этот кусок вызывает сомнения: clrscr; Вот что я вводил: n=3 start<пробел>finish<пробел><пробел> ... на этом ввод прерывается и мне распечатывает: Цитата start finish <пустая строка или пробел> А у меня получилось вот такое (для ввода слов): uses crt; |
klem4 |
![]()
Сообщение
#20
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
А если так :
write('n='); readln(n); -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 19:23 |