Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.01.2012, 23:18
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию Расстановка окончаний слова у его падежей

В WoW (и других линейках наверное тоже), когда вводишь ник персонажа, появляется оконце со всеми его падежами и правильно подставленными окончаниями...

Необходимо сделать такое же в делфи...

Может есть какие-то у кого решения или заготовки, мысли?
Ответить с цитированием
  #2  
Старый 14.01.2012, 23:37
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Создаёшь по падежам массив со всеми возможными окончаниями и при необходимости подставляешь.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 15.01.2012, 02:42
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию

у нас 3 рода, единичное и множественное число.. потом надо как-то отделить окончание у слова от корня, суффикса, приставок и тп, определить его род... потом, если словосочитание, еще надо определить какое там слово главное, типа "база данных" склонятся будет только "база", но как это все определить?
Ответить с цитированием
  #4  
Старый 15.01.2012, 02:52
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Делать полностью с соблюдениями всех правил русского языка, как мне кажется, будет накладно. Проще сделать некий упрощённый вариант. Хорошо, если заранее известен набор слов, иначе нужно иметь некую базу (можно и от какого-нибудь переводчика) и от неё "танцевать".
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 15.01.2012, 03:30
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию

наверное надо набор правил сделать какой-то... хотя, наверное реально же сделать массив ж.род, состоящий из массивов ед.число и мн.число, каждый из которых состоит из массивов падежей, в которых содержаться окончания?))) и для остальных родов так же...
а для прилагательных один массив со всеми возможными окончаниями, чтобы можно было узнать, прилагательное это или нет, для словосочитаний...
Ответить с цитированием
  #6  
Старый 17.01.2012, 02:35
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию

что-то сделал, кроме исключений вроде более менее работает, сойдет)

только проблема с повторяющимися значениями. Нужно удалить повторяющиеся элементы, делал через второй массив:

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.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:59.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025