множества |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
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 Пол: Мужской Репутация: 24 |
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 - -------------------- Close the World...txeN eht nepO
|
Malice |
Сообщение
#9
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Если я все правильно понял, то 50 слов * (8 символов +1 разделитель) = 450 символов максимум. Стрингом никак
|
klem4 |
Сообщение
#10
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Цитата(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 Пол: Мужской Репутация: 20 |
Цитата(klem4 @ 16.06.05 14:07) что значит ? программа, описаная выше, видишь ? там объявлен массив строк по 8 символов так что никаких проблем. Массив заполняется при вводе ? Нет. Там readln (s). |
Archon |
Сообщение
#12
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
:D :D :D :D :D :D :D
Можно S : string; заменить на S : array [1..450] of char; только вводить сложнее. И вообще, нефиг придираться, там ещё написано: Цитата между соседними словами – запятая или не менее одного пробела Если пробелов ставить можно сколько угодно, нам придётся безразмерную строку делать что-ли? <_< -------------------- Close the World...txeN eht nepO
|
Malice |
Сообщение
#13
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Цитата(Archon @ 16.06.05 14:23) Если пробелов ставить можно сколько угодно, нам придётся безразмерную строку делать что-ли? <_< Зря ты так. Может в этом и суть Описано уж больно все конкретно. Придется заполнять массив при вводе, используя что-то типа RLe компресии и array [1..499] Ж) |
volvo |
Сообщение
#14
|
Гость |
Цитата(Malice @ 16.06.05 14:38) Может в этом и суть Описано уж больно все конкретно. Что именно КОНКРЕТНО описано? Я например виже только то, что есть ограничение на длину слова... С остальным никаких проблем нет, но если тебе так хочется поумничать, то просто напиши свою функцию ввода строки посимвольно... 10 минут работы вместе с отладкой... В чем проблемы? |
klem4 |
Сообщение
#15
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Можно вводить сразу массив слов :
uses crt; немного лагает, надо поправить Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Archon |
Сообщение
#16
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Да ну вас... Мы же с Malice пошутили... :p2:
У нас для этого есть раздел "ЮМОР"... А сюда люди когда приходят, им не до шуток... Да, сэр, так точно, сэр! Сообщение отредактировано: Archon - -------------------- Close the World...txeN eht nepO
|
klem4 |
Сообщение
#17
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Не уверен что отрабатывает полностью правильно, так что не бейте , здесь вариант с фиксированным числом записей, взгляните :
uses crt; если надо, можно сделать такойже ввод, только без фиксированного числа последовательностей Сообщение отредактировано: klem4 - -------------------- 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 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
А если так :
write('n='); readln(n); -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Текстовая версия | 11.01.2025 9:39 |