![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() В WoW (и других линейках наверное тоже), когда вводишь ник персонажа, появляется оконце со всеми его падежами и правильно подставленными окончаниями...
Необходимо сделать такое же в делфи... Может есть какие-то у кого решения или заготовки, мысли? |
#2
|
||||
|
||||
![]() Создаёшь по падежам массив со всеми возможными окончаниями и при необходимости подставляешь.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() у нас 3 рода, единичное и множественное число.. потом надо как-то отделить окончание у слова от корня, суффикса, приставок и тп, определить его род... потом, если словосочитание, еще надо определить какое там слово главное, типа "база данных" склонятся будет только "база", но как это все определить?
|
#4
|
||||
|
||||
![]() Делать полностью с соблюдениями всех правил русского языка, как мне кажется, будет накладно. Проще сделать некий упрощённый вариант. Хорошо, если заранее известен набор слов, иначе нужно иметь некую базу (можно и от какого-нибудь переводчика) и от неё "танцевать".
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
|||
|
|||
![]() наверное надо набор правил сделать какой-то... хотя, наверное реально же сделать массив ж.род, состоящий из массивов ед.число и мн.число, каждый из которых состоит из массивов падежей, в которых содержаться окончания?))) и для остальных родов так же...
а для прилагательных один массив со всеми возможными окончаниями, чтобы можно было узнать, прилагательное это или нет, для словосочитаний... |
#6
|
|||
|
|||
![]() что-то сделал, кроме исключений вроде более менее работает, сойдет)
только проблема с повторяющимися значениями. Нужно удалить повторяющиеся элементы, делал через второй массив: word:array[0..11] of string - исходный массив с повторами, findword:array of string - новый массив, где не должно быть повторов Код:
for i:=0 to Length(word)-1 do begin flag:=true; for k:=0 to Length(finword)-1 do begin if word[i]=finword[k] then begin flag:=false; break; end; if flag=true then begin SetLength(finword,Length(finword)+1); finword[length(finword)-1]:=word[i]; end; end; end; Последний раз редактировалось ShutTap, 17.01.2012 в 03:49. |