Поиск слов в англо-русском словаре
Начальное формирование данных обо всех словах в виде списка. Поиск заданного слова в словаре и печать его толкования. Поиск синонимов – слов с одинаковыми значениями на русском языке и подсчет их количества. Описание классов и их программная реализация.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 16.12.2012 |
Размер файла | 127,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Новосибирская государственная академия водного транспорта
Кафедра информационных систем
Курсовой проект
по дисциплине «Технология программирования»
Вариант №7
«Поиск слов в англо-русском словаре»
Выполнил
Студент
Горяинов А.С.
Группа: ИТ-21а
Проверил
Преподаватель
Морозов Ю.В.
2012 г.
Формулировка задания
Составить программу, которая управляет поиском слов в англо- русском словаре:
Сведения о каждом слове содержат:
· Слово на английском языке
· Часть речи
· Значение на русском языке
Программа должна решать следующие задачи:
· Начальное формирование данных обо всех словах в виде списка.
· Поиск заданного слова в словаре и печать его толкования
· Поиск синонимов - слов с одинаковыми значениями на русском языке и подсчет их количества.
Информационные системы в словарях
МАШИННЫЙ ПЕРЕВОД- это выполняемое на компьютере действие по преобразованию текста на одном естественном языке в эквивалентный по содержанию текст на другом языке, а также результат такого действия. Современный машинный, или автоматический перевод осуществляется с помощью человека: пред-редактора, который тем или иным образом предварительно обрабатывает подлежащий переводу текст, интер-редактора, который участвует в процессе перевода, или пост-редактора, который исправляет ошибки и недочеты в переведенном машиной тексте.
Для осуществления машинного перевода в компьютер вводится специальная программа, реализующая алгоритм перевода, под которым понимается последовательность однозначно и строго определенных действий над текстом для нахождения переводных соответствий в данной паре языков L1 - L2 при заданном направлении перевода (с одного конкретного языка на другой). Система машинного перевода включает в себя двуязычные словари, снабженные необходимой грамматической информацией (морфологической, синтаксической и семантической) для обеспечения передачи эквивалентных, вариантных и трансформационных переводных соответствий, а также алгоритмические средства грамматического анализа, реализующие какую-либо из принятых для автоматической переработки текста формальных грамматик. Имеются также отдельные системы машинного перевода, рассчитанные на перевод в рамках трех и более языков, но они в настоящее время являются экспериментальными.
Наиболее распространенной является следующая последовательность формальных операций, обеспечивающих анализ и синтез в системе машинного перевода:
1. На первом этапе осуществляется ввод текста и поиск входных словоформ (слов в конкретной грамматической форме, например дательного падежа множественного числа) во входном словаре (словаре языка, с которого производится перевод) с сопутствующим морфологическим анализом, в ходе которого устанавливается принадлежность данной словоформы к определенной лексеме (слову как единице словаря). В процессе анализа из формы слова могут быть получены также сведения, относящиеся к другим уровням организации языковой системы.
2. Следующий этап включает в себя перевод идиоматических словосочетаний, фразеологических единств или штампов данной предметной области (например, при англо-русском переводе обороты типаin case of, in accordance with получают единый цифровой эквивалент и исключаются из дальнейшего грамматического анализа); определение основных грамматических (морфологических, синтаксических, семантических и лексических) характеристик элементов входного текста (например, числа существительных, времени глагола, синтаксических функций словоформ в данном тексте и пр.), производимое в рамках входного языка; разрешение омографии (конверсионной омонимии словоформ - скажем, англ. round может быть существительным, прилагательным, наречием, глаголом или же предлогом); лексический анализ и перевод лексем. Обычно на этом этапе однозначные слова отделяются от многозначных (имеющих более одного переводного эквивалента в выходном языке), после чего однозначные слова переводятся по спискам эквивалентов, а для перевода многозначных слов используются так называемые контекстологические словари, словарные статьи которых представляют собой алгоритмы запроса к контексту на наличие/отсутствие контекстных определителей значения.
3. Окончательный грамматический анализ, в ходе которого доопределяется необходимая грамматическая информация с учетом данных выходного языка (например, при русских существительных типа сани, ножницы глагол должен стоять в форме множественного числа, при том что в оригинале может быть и единственное число).
4. Синтез выходных словоформ и предложения в целом на выходном языке.
В зависимости от особенностей морфологии, синтаксиса и семантики конкретной языковой пары, а также направления перевода общий алгоритм перевода может включать и другие этапы, а также модификации названных этапов или порядка их следования, но вариации такого рода в современных системах, как правило, незначительны. Анализ и синтез могут производиться как по фразно, так и для всего текста, введенного в память компьютера; в последнем случае алгоритм перевода предусматривает определение так называемых анафорических связей (такова, например, связь местоимения с замещаемым им существительным - скажем, местоимения им со словом местоимения в самом этом пояснении в скобках).
Действующие системы машинного перевода ориентированы на конкретные пары языков (например, французский и русский или японский и английский) и используют, как правило, переводные соответствия либо на поверхностном уровне, либо на некотором промежуточном уровне между входным и выходным языком. Качество машинного перевода зависит от объема словаря, объема информации, приписываемой лексическим единицам, от тщательности составления и проверки работы алгоритмов анализа и синтеза, от эффективности программного обеспечения. Современные аппаратные и программные средства допускают использование словарей большого объема, содержащих подробную грамматическую информацию. Информация может быть представлена как в декларативной (описательной), так и в процедурной (учитывающей потребности алгоритма) форме.
Современный машинный перевод следует отличать от использования компьютеров в помощь человеку-переводчику. В последнем случае имеется в виду автоматический словарь, помогающий человеку быстрее подбирать нужный переводной эквивалент. Хотя и в том, и в другом случае компьютер работает вместе с человеком (переводчиком или редактором), в содержание термина «машинный перевод» входит представление о том, что главную, бoльшую часть работы по переводу и отысканию переводных эквивалентов и переводных соответствий машина берет на себя, оставляя человеку лишь контроль и исправление ошибок, в то время как компьютерный словарь в помощь человеку - это чисто вспомогательное средство для быстрого нахождения переводных соответствий; при этом, однако, в такого рода словарях в ограниченной степени могут быть реализованы и некоторые функции, присущие системам машинного перевода.
В практике переводческой деятельности и в информационной технологии различаются два основных подхода к машинному переводу. С одной стороны, результаты машинного перевода могут быть использованы для поверхностного ознакомления с содержанием документа на незнакомом языке. В этом случае он может использоваться как сигнальная информация и не требует тщательного редактирования. Другой подход предполагает использование машинного перевода вместо обычного «человеческого». Это предполагает тщательное редактирование и настройку системы перевода на определенную предметную область. Здесь играют роль полнота словаря, ориентированность его на содержание и набор языковых средств переводимых текстов, эффективность способов разрешения лексической многозначности, результативность работы алгоритмов извлечения грамматической информации, нахождения переводных соответствий и алгоритмов синтеза. На практике перевод такого типа становится экономически выгодным, если объем переводимых текстов достаточно велик (не менее нескольких десятков тысяч страниц в год), если тексты достаточно однородны, словари системы полны и допускают дальнейшее расширение, а программное обеспечение удобно для пост-редактирования. Такого рода системы машинного перевода используются в организациях, потребности которых в оперативных и качественных переводах достаточно велики.
Теоретической основой начального (конец 1940-х - начало 1950-х годов) периода работ по машинному переводу был взгляд на язык как кодовую систему. Пионерами МП были математики и инженеры. Описания их первых опытов, связанных с использованием только что появившихся ЭВМ для решения криптографических задач, были опубликованы в США в конце 1940-х годов. Датой рождения машинного перевода как исследовательской области обычно считают март 1947; именно тогда специалист по криптографии Уоррен Уивер в своем письме Норберту Винеру впервые поставил задачу машинного перевода, сравнив ее с задачей дешифровки.
Тот же Уивер после ряда дискуссий составил в 1949 меморандум, в котором теоретически обосновал принципиальную возможность создания систем машинного перевода. Вскоре началось финансирование исследований; в 1952 состоялась первая конференция по машинному переводу, организованная логиком и математиком Й.Бар-Хиллелом.
Помимо очевидных практических нужд важную роль в становлении машинного перевода сыграло то обстоятельство, что предложенный в 1950 английским математиком А.Тьюрингом знаменитый тест на разумность («тест Тьюринга») фактически заменил вопрос о том, может ли машина мыслить, на вопрос о том, может ли машина общаться с человеком на естественном языке таким образом, что тот не в состоянии будет отличить ее от собеседника-человека. Тем самым вопросы компьютерной обработки естественноязыковых сообщений на десятилетия оказались в центре исследований по кибернетике (а впоследствии по искусственному интеллекту), а между математиками, программистами и инженерами-компьютерщиками, с одной стороны, и лингвистами - с другой установилось продуктивное сотрудничество.
В 1954 общественности были предъявлены первые результаты: фирма IBM совместно с Джорджтаунским университетом (США) успешно осуществили первый эксперимент (вошедший в историю под названием Джорджтаунского), в ходе которого система, использовавшая словарь из 250 слов и грамматику из 6 синтаксических правил, осуществила перевод 49 заранее отобранных предложений. В том же 1954 первый эксперимент по машинному переводу был осуществлен в СССР И.К.Бельской (лингвистическая часть) и Д.Ю.Пановым (программная часть) в Институте точной механики и вычислительной техники Академии наук СССР, а первый промышленно пригодный алгоритм машинного перевода и система машинного перевода с английского языка на русский на универсальной вычислительной машине были разработаны коллективом под руководством Ю.А.Моторина. После этого работы начались во многих информационных институтах, научных и учебных организациях страны.
Идея машинного перевода стимулировала развитие исследований в теоретическом и прикладном языкознании во всем мире. Появились теории формальных грамматик, большое внимание стало уделяться моделированию языка и отдельных его аспектов, языковой и мыслительной деятельности, вопросам языковой формы и количественных распределений лингвистических явлений. Возникли новые направления лингвистической науки - вычислительная, математическая, инженерная, статистическая, алгоритмическая лингвистика и ряд других отраслей прикладного и теоретического языкознания. В течение 1950-х годов в учебных центрах многих стран мира были открыты отделения прикладной лингвистики и машинного перевода. Так, в СССР такие отделения были созданы в Москве (МГУ им. М.В.Ломоносова, МГПИИЯ им. М.Тореза - ныне МГЛУ), в Минском МГПИИЯ, в Ереване, Махачкале, Ленинградском университете, в университетах Киева, Харькова, Новосибирска, ряда других городов. Исследования и разработки по машинному переводу развернулись также во Франции, Англии, США, Канаде, Италии, Германии, Японии, Нидерландах, Болгарии, Венгрии и других странах, а также в международных организациях, где велик объем переводов с различных языков. В настоящее время исследования по МП ведутся и в таких странах, как Малайзия, Саудовская Аравия, Иран и др.
Исследования по машинному переводу за свою пятидесятилетнюю историю переживали как подъемы, так и спады. В начале 1960-х годов завершился первоначальный эйфорический этап в развитии МП, чему в сильнейшей степени способствовала публикация так называемой «Черной книги машинного перевода» - доклада Специального комитета по прикладной лингвистике (ALPAC) Национальной академии наук США, в котором была констатирована невозможность создания в обозримом будущем универсальных систем высококачественного машинного перевода. Следствием этой публикации было сокращение финансирования и общее снижение интереса к проблематике МП, однако полного сворачивания исследований, в особенности теоретических, не произошло.
Новый подъем исследований в области МП начался в 1970-х годах и был связан с серьезными достижениями в области компьютерного моделирования интеллектуальной деятельности. Соответствующая область исследований, возникшая несколько позже МП (датой ее рождения обычно считают 1956), получила название искусственного интеллекта, а создание систем машинного перевода было осмыслено в 1970-е годы как одна из частных задач этого нового исследовательского направления.
Можно выделить два основных стимула к развитию работ по машинному переводу в современном мире. Первый - собственно научный; он определяется комплексностью и сложностью компьютерного моделирования перевода. Как вид языковой деятельности перевод затрагивает все уровни языка - от распознавания графем (и фонем при переводе устной речи) до передачи смысла высказывания и текста. Кроме того, для перевода характерна обратная связь и возможность сразу проверить теоретическую гипотезу об устройстве тех или иных языковых уровней и эффективности предлагаемых алгоритмов. Эта характеристическая черта перевода вообще и машинного перевода в частности привлекает внимание теоретиков, в результате чего продолжают возникать все новые теории автоматизации перевода и формализации языковых данных и процессов.
Второй стимул - социальный, и обусловлен он возрастающей ролью самой практики перевода в современном мире как необходимого условия обеспечения межъязыковой коммуникации, объем которой возрастает с каждым годом. Другие способы преодоления языковых барьеров на пути коммуникации - разработка или принятие единого языка, а также изучение иностранных языков - не могут сравниться с переводом по эффективности. С этой точки зрения можно утверждать, что альтернативы переводу нет, так что разработка качественных и высокопроизводительных систем машинного перевода способствует разрешению важнейших социально-коммуникативных задач.
В ходе развития идей и создания промышленных систем машинного перевода были разработаны способы автоматического морфологического анализа для основных европейских языков, методы автоматического обнаружения синтаксических структур, сформулированы требования к семантическим компонентам систем. В рамках эффективного международного сотрудничества и обмена терминологией созданы большие автоматические словари с разнообразной лексической информацией, банки терминологических данных по разным тематическим областям (например, словарь ЕВРОДИКАТОМ и ряд других словарей, тематика которых определялась тем обстоятельством, что практический машинный перевод чаще всего имеет дело с научными и техническими текстами). Результаты работ по МП способствовали началу и развитию исследований и разработок в области автоматизации информационного поиска, логического анализа естественно-языковых текстов, экспертных систем, способов представления знаний в вычислительных системах и т.д.
В СССР в качестве головной организации по машинному переводу был в 1974 определен Всесоюзный центр переводов научно-технической литературы и документации (ВЦП), взявший на себя координацию работ в масштабе страны. Под его эгидой был проведен ряд крупных международных научных конференций (1975, 1979, 1983, 1985, 1989) по машинному переводу и проблемам научно-технического перевода. В ВЦП были созданы промышленные системы машинного перевода с английского языка на русский АМПАР (на основе исследований и разработок коллектива Ю.А. Моторина), с немецкого языка на русский НЕРПА, с французского языка на русский ФРАП, автоматические терминологические словари в помощь человеку-переводчику. Система АМПАР длительное время находилась в промышленной эксплуатации; впоследствии на ее базе были созданы более эффективные системы МП для персональных компьютеров семейства СПРИНТ. В ВПЦ была также разработана система МП с русского языка на английский АСПЕРА. Большой вклад в разработку промышленных систем МП был сделан ленинградской общесоюзной группой «Статистика речи» под руководством Р.Г.Пиотровского, а также группами специалистов по компьютерной лингвистике в Минске (А.В.Зубов), Кишиневе (В.А.Чижаковский), Махачкале (А.И.Чапля), Чимкенте (К.Б.Бектаев), Самарканде (Х.А.Арзикулов) и др. На базе исследований и научно-практического подхода группы «Статистика речи» были впоследствии разработаны и сейчас находятся в коммерческом использовании такие системы машинного перевода, как Stylus, Socrat и другие.
В настоящее время в Российской Федерации продолжаются в незначительных масштабах некоторые работы по системам МП, основанным на подходе «текст-смысл-текст», не всегда явно проговариваемым лозунгом которого в момент обоснования этого подхода в 1960-х годов был «машинный перевод без перевода, без машин, без алгоритмов» (см. обзор работ этого направления, принадлежащий Л.Н. Беляевой и М.И. Откупщиковой). Идея подхода заключалась в том, что от лингвиста требуется только декларативное описание фактов языка (т.е. лингвистическая теория, претендующая, правда, на особую точность и формализованность), а алгоритмы перевода составят программист и математик. В рамках этих исследований были получены значительные теоретико-лингвистические результаты (в частности, создана теория так называемых лексических функций, нашедшая применение в лексикографии), однако для создания практических систем подобного рода подход оказался недостаточно эффективным. Все практические системы без исключения используют идею переводных соответствий, т.е. в их основе лежит модель «текст-текст» и они реализуют краткую схему перевода. Неизмеримо выросшие за последние десятилетия возможности вычислительной техники и новые программистские подходы никак не могут помочь реализовать идеи анализа и синтеза, основанные на приоритете выявления только синтаксической структуры с последующим переходом к смыслу. Выявление содержания текста в рамках человеко-машинного интерфейса может производиться, как и во всякой прикладной задаче, только с использованием как декларативных, так и процедурных знаний и при значительной опоре на лексику. Эта точка зрения обоснована, в частности, в недавних работах отечественного специалиста по программированию и искусственному интеллекту А.С.Нариньяни.
За рубежом эксплуатируется целый ряд систем машинного перевода. Наиболее известной из их числа является система SYSTRAN, разработанная и поддерживаемая компанией SYSTRAN Software Inc. и используемая службой машинного перевода при комиссии Европейского союза. Данная служба, объем переводов в которой составляет около 2,5 млн. страниц в год, использует систему SYSTRAN для перевода с английского на немецкий, французский, испанский, греческий и итальянский языки, а также с французского на английский, испанский и итальянский. В практической эксплуатации находится ряд практических систем исследовательского центра Гренобля (Франция), систему CULT (Гонконг, ныне КНР) и ряд других. На рынке коммерческого машинного перевода предлагаются системы таких фирм, как Logos Corp., Globalinc Inc., Toshiba Corp., CompuServe и др., в том числе и санкт-петербургская компания ПроМТ, выпустившая под названием PROMT 98 усовершенствованную версию популярной системы Stylus.
Проблематика машинного перевода находит свое отражение в регулярно проводимых международных конференциях по вычислительной лингвистике COLING, а также на международных конференциях по машинному переводу MT SUMMIT.
Технические инновации 1990-х годов (значительное расширение возможностей персональных компьютеров, появление качественных и доступных массовому пользователю сканеров и эффективных программ оптического распознавания текста, а также развитие глобальной компьютерной сети Internet и средств доступа к ней) придали новый стимул работам по МП, привлекли в данную область новые значительные инвестиции и увенчались серьезными практическими результатами - появлением достаточно эффективных систем машинного перевода и компьютерных словарей для работы на персональном компьютере (в том числе продуктов отечественных компаний ПроМТ, «Бит», «Арсеналъ», отчасти уже упомянутых выше); объединением систем МП с системами оптического распознавания текста и проверки орфографии; созданием специальных средств МП для работы в Internet, обеспечивающих либо перевод текстов на серверах соответствующих компаний, либо онлайновый перевод Web-страниц. В сочетании с пониманием ограничений МП и реалистической формулировкой целей его использования (прежде всего, это ознакомительно-реферативные цели, что хорошо соответствует базовой идеологии Internet как средства «навигации в информационном море») все это позволяет говорить об органичном встраивании систем МП в общий процесс формирования глобального информационного общества.
Эффективность работы современной системы МП в решающей степени зависит от ее удачной настройки на конкретный подъязык (или микроподъязык) естественного языка, на определенную лексику и ограниченный набор грамматических средств, характерных для текстов данной предметной области, а также на определенные типы документов. Учение о подъязыках с точки зрения машинного перевода было впервые сформулировано Н.Д.Андреевым (Ленинградский университет) в 1967, хотя представления о языковых регистрах, стилях, жанрах письменного текста и т.п. были хорошо известны и в традиционной лингвистике. Подъязык, с точки зрения МП, определяется в первую очередь некоторым исходным набором текстов, в рамках которого определяется входной и выходной словари, степень распространения и характер лексической неоднозначности лексем, характер и распространенность синтаксических конструкций, способы их перевода в данной языковой паре и пр. Большую роль играют параллельные тексты и словари-конкордансы, с помощью которых можно достаточно эффективно изучить и использовать в составлении алгоритмов лексическую сочетаемость и дистрибуцию (распределение) языковых элементов в речи (дискурсе, тексте). Статистические характеристики подъязыков помогают упорядочить структуру соответствующих алгоритмов анализа и синтеза. Выходной словарь, ориентированный на потребности синтеза и передачи основных видов соответствий в конкретной языковой паре, обеспечивает приемлемый выходной текст. В любом из современных видов машинного перевода необходимо участие человека-редактора, удобство работы которого обеспечивается качеством и надежностью соответствующего программного обеспечения.
Перспективы развития машинного перевода связаны с дальнейшей разработкой и углублением теории и практики перевода, как машинного, так и «человеческого». Для развития теории важны результаты сопоставительного языкознания, общей теории перевода, теории закономерных соответствий, способов представления знаний, оптимизации и совершенствования лингвистических алгоритмов. Новые и более эффективные словари с необходимой словарной информацией, строгие теории терминологизации лексики, теория и практика работы с подъязыками помогут повысить качество перевода лексических единиц. Формальные грамматики, ориентированные на перевод, дадут возможность оптимизировать алгоритмы нахождения переводных соответствий в данной коммуникативной ситуации, которая может быть описана в рамках соответствующих прикладных теорий представления знаний. Наконец, новые возможности программирования и вычислительной техники также будут вносить свой вклад в совершенствование и дальнейшее развитие теории и практики машинного перевода.
Описание классов и их программная реализация
Файл: slovar.h - класс описания элементов списка слов:
#pragma once
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
class slovar
{private:
char* slovo;
char* chast;
char* sinonim;
slovar* Next;
public:
slovar(void);
~slovar(void);
slovar(char*slovo1,char*chast1,char*sinonim1);
void Input(void);
void Print(void);
char*Getslovo(void);
char*Getchast(void);
char*Getsinonim(void);
slovar*GetNext(void);
void Setslovo(char*slovo1);
void Setchast(char*chast1);
void Setsinonim(char*sinonim1);
void SetNext(slovar*Next1);
};
Файл - slovarList.h - класс описания элементов списка синонимов:
#pragma once
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include "slovar.h"
class slovarList
{
private:slovar*Start;
public:
slovarList(void);
~slovarList(void);
void Print(void);
slovar* Findsinonim(void);
char Podschet(char *sinonim1);
void AddEnd(slovar &t1);
void AddStart(slovar &s2);
void DelEnd(void);
void DelStart(void);
};
Файл - slovar.срр - Класс списка перевода слова:
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include "slovar.h"
slovar::slovar(void)
{
slovo=NULL;
chast=NULL;
sinonim=NULL;
}
slovar::~slovar(void)
{
}
slovar::slovar(char *slovo1,char *chast1,char *sinonim1)
{
slovo=new char[strlen(slovo1)];
strcpy(slovo,slovo1);
chast=new char[strlen(chast1)];
strcpy(chast,chast1);
sinonim=new char[strlen(sinonim1)];
strcpy(sinonim,sinonim1);
}
void slovar::Input(void)
{
char slovo1[999];
printf("\n Vvedite slovo ispolzuya '_' vmesto ' ': ");
scanf("%s",slovo1);
slovo=new char[strlen(slovo1)];
strcpy(slovo,slovo1);
char chast1[999];
printf("\n Vvedite chast pechi ispolzuya '_' vmesto ' ': ");
scanf("%s",chast1);
chast=new char[strlen(chast1)];
strcpy(chast,chast1);
int i=0,n=0;
printf("Vvedite kol-vo sinonimov");
char sinonim1[999];
printf("\n Vvedite sinonim ispolzuya '_' vmesto ' ': ");
scanf("%s",sinonim1);
sinonim=new char[strlen(sinonim1)];
strcpy(sinonim,sinonim1);
}
void slovar::Setslovo(char *slovo1)
{
slovo=new char[strlen(slovo1)];
strcpy(slovo,slovo1);
}
void slovar::Setchast(char *chast1)
{
chast=new char[strlen(chast1)];
strcpy(chast,chast1);
}
void slovar::Setsinonim(char *sinonim1)
{
sinonim=new char[strlen(sinonim1)];
strcpy(sinonim,sinonim1);
}
void slovar::SetNext(slovar *Next1)
{
Next=Next1;
}
char*slovar::Getslovo(void)
{
return slovo;
}
char*slovar::Getchast(void)
{
return chast;
}
char*slovar::Getsinonim(void)
{
return sinonim;
}
slovar*slovar::GetNext(void)
{
return Next;
}
Файл - slovarList.cpp - Полное описание
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include "slovar.h"
#include "slovarList.h"
slovarList::slovarList(void)
{
Start=NULL;
}
slovarList::~slovarList(void)
{
}
slovar* slovarList::Findsinonim(void)
{
slovar*Cur;
char slovo1[100];
printf("\n Vvedite slovo: ");
scanf("%s",slovo1);
for(Cur=Start;Cur!=NULL;Cur=Cur->GetNext())
if(stricmp(slovo1,Cur->Getslovo())==0)
{
printf("\n slovo found!\n");
printf("\n %s",Cur->Getslovo());
printf("\n Chast pechi: %s",Cur->Getchast());
printf("\n Sinonim: %s\n",Cur->Getsinonim());
return Cur;}
else {printf("slovo ne naydeno");}
}
void slovarList::AddEnd(slovar &B1)
{
slovar *New,*Cur;
New=new slovar;
New->Setchast(B1.Getchast());
New->Setslovo(B1.Getslovo());
New->Setsinonim(B1.Getsinonim());
if(Start==NULL){
Start=New;
New->SetNext(NULL);}
else {
for(Cur=Start;Cur->GetNext()!=NULL;Cur=Cur->GetNext());
Cur->SetNext(New);
New->SetNext(NULL);
Start=New;
}
}
void slovarList::AddStart(slovar& s1)
{
slovar* New;
New=new slovar;
New->Setslovo(s1.Getslovo());
New->Setchast(s1.Getchast());
New->Setsinonim(s1.Getsinonim());
if(Start==NULL)
{
Start=New;
New->SetNext(NULL);
}
else
{
New->SetNext(Start);
Start=New;
}
}
void slovarList::DelStart(void)
{
slovar *Del,*Cur;
Cur=Start;
Start=(Cur->GetNext());
Del=Cur;
delete Del;
}
void slovarList::DelEnd(void)
{
slovar *Del,*Cur;
for(Cur=Start;(Cur->GetNext())->GetNext()!=NULL;Cur=Cur->GetNext());
Del=Cur->GetNext();
Cur->SetNext(NULL);
delete Del;
}
char slovarList::Podschet(char *sinonim1)
{
int n=0;
slovar*Cur;
for(Cur=Start;Cur!=NULL;Cur=Cur->GetNext())
// if(Cur->Getsinonim()==sinonim1) n++;
return n;
{
printf("%s",sinonim1);
}
}
Описание алгоритмов для каждой задачи
слово поиск синоним словарь
1). Начальное формирование данных обо всех словах в виде списка
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Создается список слов и их описания(слово,часть речи и синоним).
2). Поиск заданного слова в словаре и печать его толкования
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Создается новый элемент типа slovar. Затем пользователя приглашают ввести данные о слове(слово,часть речи и синоним). Далее для нового элемента назначаем указатель на следующий элемент - на тот который стоял в начале. После этого в списке назначаем новый элемент как первый.
3). Поиск синонимов - слов с одинаковыми значениями на русском языке и подсчет их количества:
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Пользователю предлагается ввести желаемые параметры для поиска подходящей слова. Затем проверяется каждый элемент списка, и если находится подходящий вариант, то на экран выводится информация ослове.
Программная реализация задач
Файл kursovik.cpp
#include "stdafx.h"
#include "slovar.h"
#include "slovarList.h"
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
int v,f;
slovarList L;
ii:printf("\n\nVibirite deistvie\n 1.Zapolnit spisok\n 2. Naiti slovo\n 3. Podschitat kol-vo\n 0. Vihod\n ");
scanf("%i",&v);
if(v==1)
{
jj:printf("Vibirite deistvie\n 1. AddStart \n 2. AddEnd \n 3. DeleteStart\n 4. DeleteEnd\n 5. V predidushee menu\n 0. Vihod\n ");
scanf("%i",&f);
if(f==1){slovar t1; t1.Input(); L.AddStart(t1);goto jj;}
if(f==2){slovar s2; s2.Input(); L.AddEnd(s2);goto jj;}
if(f==3){L.DelStart();goto jj;}
if(f==4){L.DelEnd();goto jj;}
if(f==5) goto ii;
}
if(f==2) goto ii;
{L.Findsinonim();
goto ii;
}
if(v==3)
{
char *str;
printf("\n Vvedite N stranici: ");scanf("%s",&str);
if(L.Podschet(str)==0) printf("\n slovo ne vstrechautsa");
else printf("\nChislo slov %i\n ",L.Podschet(str));
goto ii;
}
}
Демонстрационная программа
Список литературы
Бельская И.К. Язык человека и машина. М., 1969
Марчук Ю.Н. Проблемы машинного перевода. М., 1983
Нелюбин Л.Л. Компьютерная лингвистика и машинный перевод. М., 1991
Беляева Л.Н., Откупщикова М.И. Автоматический (машинный) перевод. - В сб.: Прикладное языкознание. СПб, 1996
Размещено на Allbest.ru
Подобные документы
Разработка набора взаимосвязанных классов для реализации Hash-поиска как специализированного контейнера. Поиск с использованием Хэш-функций. Объектная технология. Описание пользовательского интерфейса. Листинг и описание всех классов библиотеки на DP.
курсовая работа [231,2 K], добавлен 15.10.2008Реализация программы в виде класса, используя для хранения информации контейнеры стандартной библиотеки шаблонов (STL) языка C++. Создание новой базы данных. Вывод информации о всех компьютерах. Удаление элементов контейнера, их поиск по критериям.
курсовая работа [97,4 K], добавлен 10.01.2015Текстовые базы данных. Библиотеки исходников программного обеспечения. Механизм для нахождения заданного термина в тексте. Поиск без использования индекса. Степени детализации индекса. Расширенный информационный поиск. Латентное сингулярное разложение.
презентация [131,7 K], добавлен 11.10.2013Аннотация и инструменты базы BioCyc. Варианты поиска BioCyc. Поиск генов, белков, РНК и соединений. Поиск сайтов ДНК или мРНК, рост Медиа. Анализ поиска в полнотекстовых статьях. Ключевые аспекты данных BioCyc. Поиск кросс-организма и поиск BLAST.
презентация [5,3 M], добавлен 11.06.2019База данных "Эталон" НПИЦ министерства юстиции РФ. Поиск информации в справочно-информационной программе системе "Консультант плюс" и "Гарант". Сквозной поиск из главного раздела "законодательство". Классификатор подключенных печатных изданий.
реферат [742,7 K], добавлен 12.04.2009Всемирная Паутина - это совокупность информационных ресурсов, связанных средствами телекоммуникаций и основанных на гипертекстовом представлении данных. Поиск информации в Internet. Конкретизация области поиска при помощи выделения ключевых слов.
реферат [111,4 K], добавлен 27.06.2010Поиск вредоносных программ по средствам программ антивирусных. Выбор формата представления данных. Интерфейс программы, ее тестирование и отладка. Список процедур, их назначение. Поиск как средство для облегчения, удобства, надежности работы на ПК.
курсовая работа [22,4 K], добавлен 17.05.2013Практическое обоснование выгодности использования web-модуля "Расширенный поиск по сайту". Схема отображения процесса ввода и запроса информации. Описание алгоритма и модель решения задачи. Структура и характеристика базы данных расширенного поиска.
дипломная работа [2,4 M], добавлен 19.01.2017Исследование методов решения задачи о ходе коня. Описание алгоритмов для итеративной и рекурсивной программ. Генерация перестановок элементов по индексам. Построение эйлерова цикла на графе. Поиск кратчайшего пути на графе. Программная реализация задачи.
курсовая работа [411,6 K], добавлен 25.04.2013Отличие исконных слов от заимствованных и установление времени, причины заимствований и их роль для развития языка. Алгоритм подсчета обработанных слов приложением "Подсчет частоты введенных слов в текстовом файле". Отладка и тестирование программы.
курсовая работа [1,1 M], добавлен 13.06.2012