|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.04.2008, 11:46 | #1 |
Пользователь
Регистрация: 06.04.2008
Сообщений: 10
|
Строки. Алфавит
Здравствуйте. Подскажите, пожалуйста: дана строка слов, нужно чтобы программа вывела на экран те слова, в которых гласные (a, e, i, o, u) чередуются с согласными.
Сообствено немогу придумать как релизовать проверку на чередование . На ум приходит только полностью прописывать алфавит : If (s[i]==(’a’)|| (’e’)|| (’i’)|| (’o’)|| (’u’) && s[i+1]== (’b’)|| (’c’)|| (’d’) ну и так далее… Может ктото знает вариант попроще? p.s. и вообще если нужно работать с алфавитом то нужно задавать все буквы?! p.s.s. язык обычный С |
06.04.2008, 17:44 | #2 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Ну с согласными можно поступить проще. Тут нужно отталкиваться от противоположного. Я думаю вот так будет чуток проще:
Код:
|
06.04.2008, 18:03 | #3 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
можно создать две строки:
char гласные[] = "aeiou"; и char согласные[] = "bcdf и так далее перечисляем все согласные" далее проверка: if (strchr(гласные,слово[i]) && strchr(согласные,слово[i+1])) // значит чередуются |
06.04.2008, 18:39 | #4 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Раз речь идёт про char, то создаём массив char flags[256] и инициализируем его, скажем, по принципу 1 - гласная (flags['a'] = flags['O'] = .... = 1), 2 - согласная, 3 - разделитель слов, 0 - всё остальное, заводим такую же "четырёхзначную" переменную и проходим по строке, сравнивая каждый символ (flags[string[i]]) с этой переменной. Думаю, так проще и быстрее получится, чем такие жуткие условия конструировать.
|
06.04.2008, 20:34 | #5 | |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Цитата:
ЗЫ А, вот ещё. Может так: Код:
Последний раз редактировалось Carbon; 06.04.2008 в 20:38. |
|
06.04.2008, 20:50 | #6 |
Пользователь
Регистрация: 06.04.2008
Сообщений: 10
|
Всем спасибо за советы но..
MaTBeu - отрицание почемуто не работает. оно вообще перестает выводить слова... pu4koff - тоже почему то неработает оно выводит все подряд B_N - честно говоря я несильно понял =) сложно для меня ето еще. все равно спасибо большое за помощь. Carbon да ты прав =) можна и без скобок. так как ты предложил все работает, накладка просто в длине кода. там приходитса пиречислять все согласные буквы.. Последний раз редактировалось Hunto; 06.04.2008 в 21:04. |
06.04.2008, 21:18 | #7 |
Пользователь
Регистрация: 06.04.2008
Сообщений: 10
|
Вообщем зделал по молдовански
Вот условие задачи и полный код, может кому пригодитса Задача. Дана последовательность, которая содержит от 2 до 50 слов, в каждом из который от 1 до 8 строчных латинских букв; между соседними словами - не меньше одного пробела, за последним словом - точка. Напечатать те слова последовательности, что отличающиеся от последнего слова и удовлетворяют такое условие - в слове гласные буквы (а, e, и, о, u) чередуются с согласными. Код:
|
06.04.2008, 22:18 | #8 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
особо не вдаваясь в подробности поправил Ваш код. оформление конечно еще то... но мой вариант работает вроде:
Код:
|
06.04.2008, 22:52 | #9 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Если мне не изменяет память, алгоритмы для решения таких задачек назывались сканирующими конечными автоматами.
Код:
Последний раз редактировалось B_N; 07.04.2008 в 00:56. Причина: Чуть исправил. Нашёл-таки одну ошибочку. |
06.04.2008, 22:55 | #10 |
Пользователь
Регистрация: 06.04.2008
Сообщений: 10
|
Спасибо что помагаете. Я пробывал этот код, теоретически он правельны, но у меня он неправильно работает.
Пример: задано предложенее - "Dat thx ppp wao vid xz." У меня Ваш код выводит: Dat thx ppp wao vid Хотя это не подходит условию. А мой выводит: dar vid p.s. возможно ето проблема у меня. я незнаю, уже почти все перепробывал. пусть наверное остаетса длиный вариант B_N работает =) спасибо будет еще вариант, но я только недавно начал изучать С так что такие коды мне еще не под силу ) Последний раз редактировалось Hunto; 06.04.2008 в 23:00. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй | gotex | Помощь студентам | 4 | 08.05.2008 02:27 |
Национальный алфавит | Bagirli | Общие вопросы Delphi | 5 | 30.03.2008 01:44 |
Строки. | Mr.User | Помощь студентам | 11 | 08.12.2007 07:00 |
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. | vitalik007 | Помощь студентам | 1 | 25.09.2007 20:45 |