Подбор рифмы... или снова нужна помощь...
Мне надо написать программу на С++, подбирающую рифмы, для курсовой
Вот, что от меня хотят преподы:
– поддержка словаря-справочника слов, в котором задаются: само слово, часть речи, тема, падеж/род/склонение/ипр. (для каждого слова каждая форма заносится отдельно);
– задание количества последних символов (окончания) слова, по которым ищется рифма;
– поиск точной (полное совпадение окончаний, например, мама-рама) рифмы по критериям: часть речи, падеж, тема, комплексный поиск; составление списка всех слов, подходящих по критерию поиска; – поиск неточной (совпадение только части окончаний, например, глаза-небеса; глаза-небесах) рифмы по критериям: часть речи, падеж, тема, комплексный поиск (возможно пропуск критерия); возможность настройки маски совпадений; составление списка всех слов, подходящих по критерию поиска.
Плизз, помогите! Сам я совершенно без понятия что делать :( А сдавать уже скоро... HELP!!!
Мне надо написать программу на С++, подбирающую рифмы, для курсовой...
Вот, что от меня хотят преподы:
О! Горячая тема! И чем ближе июнь, тем горячее она становится!
И почему это ты ждешь, что кто-то ринется выполнять твое задание? Я думаю таких не будет. Вот если бы ты стал спрашивать что-то конкретное по программе, тогда другое дело.
Что не ясно то? Словарь - файлы, каждый из которых содержит слова отдельной части речи, каждое слово в отдельной строке.
Как искать? Читаешь строчку из нужного файла словаря (только не спрашивай как выбрать файл), берешь слово к которому нужно подобрать рифму, выделяешь из него заданное число последних символов в отдельную строчку и сравниваешь ее с концовкой считанного слова, или осуществляешь поиск этой строчки в считанном слове - это в зависимости от выбранных опций. Нашел - выводишь слово. И так до конца файла.
Как это делается программно - разбирайся сам. Смотреть в сторону функций fopen(), fread() или fgets(), feof(), fclose()- это для работы с файлами в стиле стандартного Си. Или CreateFile(), ReadFile(), ReadFileEx(), CloseHandle() - если испольвзовать WinAPI.
Для работы со строками: str*() - функции Си начинающиеся на str. Например strchr(), strstr(), strlen() и т.д.
Конечно это далеко не все функции которые будут нужны, но на то и дана голова, что бы думать.
...
И почему это ты ждешь, что кто-то ринется выполнять твое задание? Я думаю таких не будет...
Я не расчитываю, что кто-то ринется все делять за меня... Я, всего лишь СОВЕРШЕННО не представляю с чего начать X)-
В любом случае спасибо за подсказку... :)
Я не расчитываю, что кто-то ринется все делять за меня... Я, всего лишь СОВЕРШЕННО не представляю с чего начать X)-
В любом случае спасибо за подсказку... :)
Всегда пожалуйста, только не понятно, чему же тебя в универе учат? Если ты даже понятия не имеешь, с чего начать...
Всегда пожалуйста, только не понятно, чему же тебя в универе учат? Если ты даже понятия не имеешь, с чего начать...
В том-то и дело что не чему не учат по программированию, причем не только меня, но и всех... И это притом, что я еще не самый глупый в программировании...
PS Все приходится познавать самому :(
PS Все приходится познавать самому :(
Ура! Человек осознал истину!
Думаешь меня или многих других на этом форуме (из тех, кто знает больше меня) кто-то учил?
А что за уч. заведение, если не секрет?
ЗЫ Если что непоятно совсем, и разобраться самому нет никаких шансов, то тогда спрашивай. Чем смогу - помогу, думаю не только я.
В том-то и дело что не чему не учат по программированию, причем не только меня, но и всех...
Так не бывает. Должен соблюдаться баланс.
n-ное число лет назад я имел честь учиться в заведении, где ровным счетом ничему не учили. Но нам не задавали таких лаб. А если что-то и было сложное, всегда была полулегальная возможность достать решение, списать на худой конец.
Подобная ситуация не имеет место быть в вашем учебном заведении, раз вы обращаетесь за помощью на форум. Следовательно, вы прогуливали лекции, а присутствующим вешаете лапшу на уши.
Доважу до вашего сведения, что я действительно прогулял целых 2(огромное число!) лекции по программированию в первом семестре и ноль целых хрен десятых во втором семестре! Если вы считаете, что неотрывное нудное чтение лекции с листа(!) лектором, и ответы "Не знаю..." лектором-преподом на любой вопрос обучением? Дело ваше!
Но фразу "...вешаете лапшу на уши." в мой адрес я лично считаю оскорбительным!
И еще одно: судя по вашей манере вешать ярлыки, очень заметно что вы учились "в заведении, где ровным счетом ничему не учили."
2 pacific_7:
Учебное заведение: Чувашский ГосУнивер, факультет ИВТ.
Спасибо за помощь!
2 Freeman:
Доважу до вашего сведения, что я действительно прогулял целых 2(огромное число!) лекции по программированию в первом семестре и ноль целых хрен десятых во втором семестре! Если вы считаете, что неотрывное нудное чтение лекции с листа(!) лектором, и ответы "Не знаю..." лектором-преподом на любой вопрос обучением?...
Умиротворяющий офтоп:
Да ладно вам сраться ребята ;)
Все дело в том, что у вас видимо разные по типу преподы попадались.
Я вас понимаю обоих, т.к. сам прошел и через "диктаторов" - в смысле которые только диктуют ничего не объясняя и при этом много спрашивая. И через тех, кто нифига не знает, но при этом ничего сложного не задает.
Феноменальное "везение". И все это счастье за три года обучения в колледже.
BladeXP - расслабься в отношении учебы, раз там нифига не учат ;) Лекции можно в таком случае просто пропустить через ксерокс. Просто ты наверно еще первый курс...
Я сам недавно взялся писать такую прогу!
Буквально дня два пописал - и забил на это дело
Уж очень гиморно!!!
Слишком уж богат наш великий и могучий на части речи!!!
Доброе время суток! Очень нужна ваша помощь.
Мне надо написать программу на С++, подбирающую рифмы, для курсовой
Вот, что от меня хотят преподы:
.............................
Плизз, помогите! Сам я совершенно без понятия что делать :( А сдавать уже скоро... HELP!!!
Задача явно для СУБД.
Делаете плоскую таблицу слов с признаками.
Ну, а дальше пишете запрос, который её фильтрует, отбрасывая слова по критериям несовпадения частей речи, темы и т.п. В запросе вызываете хранимую процедуру определения совпадения окончаний (полного или частичного). И к этому всему человеческий интерфейс... Сделать, конечно, можно, но займёт кучу времени.
Короче, BladeXP, вы попали. Сочувствую. Зря вас тут ругали. Тут учись, не учись, а задача муторная. Советую пока не поздно купить решение у предыдущего курса. Либо потратить на это дело неделю full time. Без подруг, выпивки и прочих развлечений. Тоска :(
Задача явно для СУБД.
Делаете плоскую таблицу слов с признаками.
Ну, а дальше пишете запрос, который её фильтрует, отбрасывая слова по критериям несовпадения частей речи, темы и т.п. В запросе вызываете хранимую процедуру определения совпадения окончаний (полного или частичного). И к этому всему человеческий интерфейс... Сделать, конечно, можно, но займёт кучу времени.
Это все вы предлагаете на C++ разрабатывать с нуля??? Естественно, что займет кучу времени.
И при этом предлагаете сделать плоскую таблицу слов с признаками человеку который толком не знаком с основами программирования!
Эта задача не для СУБД (хотя так конечно было бы проще), а для того, что бы в человеке развить умение логически мыслить, находить решения с нуля. Внимание: заданиие не по курсу БД, а по программированию.
Тут учись, не учись, а задача муторная. Советую пока не поздно купить решение у предыдущего курса. Либо потратить на это дело неделю full time. Без подруг, выпивки и прочих развлечений. Тоска :(
Ага, а зачем вообще своей головой думать? В нее только есть надо. От того, что задача муторная (а это не так ИМХО), она не становится нерешаемой. Можно подумать - в программировании все задачи исключительно развлекательного характера.
BladeXP - искать и не сдаваться, найти и перепрятать ;) Если беретесь, то сделаете - в общем ничего сложного нет. Я думаю, что вам не нужно осуществлять поиск по базе сравнимой со словарем Даля. Сделайте для начала по минимуму - несколько сотен, а затем разовьете идею (если время останется). И на интерфейс сильно можно не наседать - для начала и коммандная строчка подойдет.
Как-то Вы слишком серьёзно восприняли моё сообщение :)
Я просто имел в виду, что сам сделал бы этот курсовик на MS Access. А если нужен словарь Даля, то на Oracle или MS SQL. Это позволило бы сразу воспользоваться готовыми хорошими средствами хранения и фильтрации данных. А в случае Access ещё и формы можно легко сделать.
Свои СУБД я разрабатывать не собираюсь, конечно. Все велосипеды изобретены уже.
Кроме того, если заметили, я добавил, что если заниматься этой задачей, а не чем-нибудь другим, то её можно за неделю написать вместе с пояснительной запиской. Если немного недопереспать, то и ещё быстрее.
Эту задачу, IMHO лучше всего решить с использованием STL.
да ладно Вам умничать, мужики (и девушки конечно если вы есть) в своё время я писал похожую прогу (что то типа проговаривателя текста (слово из головы вылетело как это назвать)).
короче:
- для словаря в 100-200 слов можно не заморачиваться и зафигачить текстовый файл (я так уже предчувствую что меня другие обитатели форума начнут бить ногами).
- вместе с каждым словом надо хранить место ударения в этом слове (легче всего при заносе в "словарь" в месте ударения ставить апостраф)
- единственное что ИМХО кажется важным - чтобы слова хранились в алфавитном порядке (сам не знаю почему - просто ж...ой чую. например потом можеть захэшировать их если время будет)
- на половину функций описанных в твоем первом пункте предлагаю ваще забить и сказать мол были разработаны сложнейшие алгоритмы так что на дополнительные функции времени не осталось. типа пусть это следующий курс доделывает. а пока радуйтесть и тому что я принес.
ну и так далее. хотя чтобы реализовать все функции и сделать проект который можно будет модернизировать в дальнейшем - всётаки лучше будет с БД.
- единственное что ИМХО кажется важным - чтобы слова хранились в алфавитном порядке (сам не знаю почему - просто ж...ой чую. например потом можеть захэшировать их если время будет)
Само собой! Например тогда двоичный поиск можно применять.
да ладно Вам умничать
greyrich как раз ты теперь, поумничал. Может открою для тебя секрет, но программисты при написании программ, ориентируются на свою голову, а не на другую часть тела. Потом что за совет забить на половину ф-ий, потому-что они якобы через чур сложны? Что это за специалист? Говорит заказчику, эти ф-ии вам ненужны, так как я их немогу закодить. :D
Доброе время суток! Очень нужна ваша помощь.
Мне надо написать программу на С++, подбирающую рифмы, для курсовой
Вот, что от меня хотят преподы:
Плизз, помогите! Сам я совершенно без понятия что делать :( А сдавать уже скоро... HELP!!!
Поиск по окнчаниям слов не совсем корректен.
Например поиск по окончанию "ка" может дать в словаре слов результат: труб"ка - пал"ка. А это далеко не рифмы. Суть точной рифмы в совпадении звучания (а не написания, что существенно усложняет анализ) основы слова и окончания.
Пример: основа алк
П"алк"а - Г"алк"а, П"алк"а - Ж"алк"о (здесь именно по звучанию) и т.д.
В коррекной форме на мой взгляд проще всего вести словарь рифм с индексами по правой и левой части. Или с хэш-таблицой по основе. Но семантический разбор слова в русском языке задача сама по себе не тривиальная,т.к. как любой "живой" язык, русский не удовлетворяет условиям 3 нормальной формы Бекуса-Науэра. Ну и конечно хранение данных должно вестись в СУБД, а не в текстовом файле.
greyrich как раз ты теперь, поумничал. Может открою для тебя секрет, но программисты при написании программ, ориентируются на свою голову, а не на другую часть тела.
был какой то анекдот, как билл гейтс писал задницей виндоуз, но я его к сожалению не помню.
если вспомню то расскажу.
Потом что за совет забить на половину ф-ий, потому-что они якобы через чур сложны? Что это за специалист? Говорит заказчику, эти ф-ии вам ненужны, так как я их немогу закодить. :D
Плизз, помогите! Сам я совершенно без понятия что делать А сдавать уже скоро... HELP!!!
не сложны а просто не необходимы, имхо. больше юмора. Mоngооsе, относитесь проще.
В том-то и дело что не чему не учат по программированию, причем не только меня, но и всех... И это притом, что я еще не самый глупый в программировании...
PS Все приходится познавать самому :(
Небольшое лирическое отступление... Задача ВУЗа - не вдолбить студенту знания (как это делают в школе), а научить его получать эти знания самому (о чем здесь автор и упомянул - наконец-то к концу года он это понял). Причем здесь могут быть два варианта: препод попадется хороший и квалифицированный (так как сейчас спрос на программистов еще большой и зарплата их больше, чем у преподавателя - то таких мало) - в этом случае он дает хорошую базу, имея которую достаточно для дальнейшего своего совершенствования. Ну а в случае не очень хороших преподавателей - студенту на самом деле придется туго (как в этом случае).
Ну а теперь по самой сути. Тут тоже получается два варианта:
1. Если Вы учитесь на менеджера, экономиста, лингвиста, историка, итп - вам в принципе нафиг не нужно программирование - за Вас это должны будут делать другие люди, а Вы будете профессионально заниматься своим делом. В этом случае - идете в любую контору (которых не мало), платите деньги - и Вам быстро, и может даже качественно сделают нужную программу.
2. Если в учитесь на программиста, математика, физика и тп. - то Вы зря потеряли целый год - в этом случае Вам нужно было не полагаться на нерадивых преподавателей, а покупать книжки и заниматься самому... Ну а сейчас решение Вашей проблемы такое же, как и в первом случае... Хотя, может Вы успеете разобраться во всем самостоятельно...