![]() |
|
|
Регистрация | << Правила форума >> | 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. |
#7
|
||||
|
||||
![]() Пользуйся тегом "{CODE}{/CODE}", не используй служебные слова в своих вариациях
Код:
// word[0..11] - исходный массив с повторами Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#8
|
|||
|
|||
![]() без break вообще не работает
|
#9
|
||||
|
||||
![]() Имеется в виду, что флаг flag не нужен в данном случае вообще.
Код:
for i:=0 to Length(word)-1 do begin for k:=0 to Length(finword)-1 do begin if word[i]=finword[k] then break; SetLength(finword,Length(finword)+1); finword[length(finword)-1]:=word[i]; end; end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 17.01.2012 в 03:57. |
#10
|
|||
|
|||
![]() Код:
SetLength(finword,0); for i:=0 to Length(word)-1 do for k:=0 to Length(finword)-1 do begin if word[i]=finword[k] then break; SetLength(finword,Length(finword)+1); finword[length(finword)-1]:=word[i]; end; что-то не копирует.. в итоге длина нового массива = 0 Последний раз редактировалось ShutTap, 17.01.2012 в 17:08. |
#11
|
|||
|
|||
![]() Что-то никак не получается...
|
#12
|
||||
|
||||
![]() И не будет, я только лишнюю переменную убрал, а алгоритм не посмотрел толком, а зря
Код:
for k:=0 to Length(finword)-1 do ... SetLength(finword,Length(finword)+1); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#13
|
|||
|
|||
![]() так работает
Код:
for i:=j to Length(word)-1 do begin flag:=true; for k:=0 to Length(finword)-1 do if word[i]=finword[k] then flag:=false; if flag=true then begin SetLength(finword,Length(finword)+1); finword[length(finword)-1]:=word[i]; end; end; break в самом начале был лишним,и флаг не в том месте стоял... спасибо за помощь) Последний раз редактировалось ShutTap, 17.01.2012 в 22:41. |