Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];
ВнизСклонение Фамилий и Имен Найти похожие ветки
← →
Маньяк (2002-09-02 14:58) [0]Приветики... Может кто-то знаить???
Подскажите алгоритму... Есть Фамилии Имена и Отчества...
Надо в отчете ставить их в соответствующий падеж, ну типа окончания менять... Как бы это сделать???
← →
MBo (2002-09-02 14:59) [1]на delphi.vitpc.com
← →
kull (2002-09-02 15:20) [2]Никак. Только имея словарь имен и фамилий.
← →
liho26 (2002-09-11 08:08) [3]Можно это сделать. У имен есть такая закономерность. женские имена почти всегда оканчиваются на гласную.
Примеры:
Виктория
Александра
Валерия
Анна
Ольга
Инга
...........
Мужские же оканчиваются на согласную или на краткую гласную.
С женскими именами проще. берем последнюю букву и меняем ее на нужную букву падежа.
Примерно так
← →
roman002 (2002-09-11 08:17) [4]Вот пример из 1с (немножко кривой), основан на анализе окончаний
//ФИО в винительный падеж
Функция глФИОВВинительном(Фам,Имя,Отч) Экспорт
Вып = 0;//признак выполнения одного из условий
//фамилия
Если Прав(Фам,1) = "а" Тогда
Рез = Лев(Фам,СтрДлина(Фам)-1)+"у";
Вып = 1;
КонецЕсли;
Если Прав(Фам,2) = "ая" Тогда
Рез = Лев(Фам,СтрДлина(Фам)-2)+"ую";
Вып = 1;
КонецЕсли;
Если Прав(Фам,2) = "ий" Тогда
Рез = Лев(Фам,СтрДлина(Фам)-2)+"ого";
Вып = 1;
КонецЕсли;
Если Прав(Фам,2) = "ый" Тогда
Рез = Лев(Фам,СтрДлина(Фам)-2)+"ого";
Вып = 1;
КонецЕсли;
Если Прав(Фам,2) = "ин" Тогда
Рез = Фам+"а";
Вып = 1;
КонецЕсли;
Если Прав(Фам,2) = "ов" Тогда
Рез = Фам+"а";
Вып = 1;
КонецЕсли;
Если Прав(Фам,2) = "ев" Тогда
Рез = Фам+"а";
Вып = 1;
КонецЕсли;
Если Вып = 0 Тогда//не выполнено ни одно условие
Рез = Фам;
КонецЕсли;
Рез = Рез+" ";
Вып = 0;
//имя
Если Прав(Имя,1) = "а" Тогда
Рез = Рез+Лев(Имя,СтрДлина(Имя)-1)+"у";
Вып = 1;
КонецЕсли;
Если Прав(Имя,1) = "я" Тогда
Рез = Рез+Лев(Имя,СтрДлина(Имя)-1)+"ю";
Вып = 1;
КонецЕсли;
Если Прав(Имя,1) = "й" Тогда
Рез = Рез+Лев(Имя,СтрДлина(Имя)-1)+"я";
Вып = 1;
КонецЕсли;
Если Прав(Имя,2) = "вь" Тогда
Рез = Рез+Имя;
Вып = 1;
КонецЕсли;
Если Вып = 0 Тогда//не выполнено ни одно условие
Рез = Рез+Имя+"а";
КонецЕсли;
Рез = Рез+" ";
Вып = 0;
//отчество
Если Прав(Отч,1) = "а" Тогда
Рез = Рез+Лев(Отч,СтрДлина(Отч)-1)+"у";
Вып = 1;
КонецЕсли;
Если Прав(Отч,1) = "ч" Тогда
Рез = Рез+Отч+"а";
Вып = 1;
КонецЕсли;
Если Вып = 0 Тогда//не выполнено ни одно условие
Рез = Рез+Отч;
КонецЕсли;
Возврат Рез;
КонецФункции//ФИОВВинительном(Фам,Имя,Отч)
//ФИО в дательном падеже
Функция глФИОВДательном(Фам,Имя,Отч) Экспорт
Вып = 0;//признак выполнения одного из условий
//фамилия
Если Прав(Фам,1) = "а" Тогда
Рез = Лев(Фам,СтрДлина(Фам)-1)+"ой";
Вып = 1;
КонецЕсли;
Если Прав(Фам,2) = "ая" Тогда
Рез = Лев(Фам,СтрДлина(Фам)-2)+"ой";
Вып = 1;
КонецЕсли;
Если Прав(Фам,2) = "ий" Тогда
Рез = Лев(Фам,СтрДлина(Фам)-2)+"ому";
Вып = 1;
КонецЕсли;
Если Прав(Фам,2) = "ый" Тогда
Рез = Лев(Фам,СтрДлина(Фам)-2)+"ому";
Вып = 1;
КонецЕсли;
Если Прав(Фам,2) = "ин" Тогда
Рез = Фам+"у";
Вып = 1;
КонецЕсли;
Если Прав(Фам,2) = "ов" Тогда
Рез = Фам+"у";
Вып = 1;
КонецЕсли;
Если Прав(Фам,2) = "ев" Тогда
Рез = Фам+"у";
Вып = 1;
КонецЕсли;
Если Вып = 0 Тогда//не выполнено ни одно условие
Рез = Фам;
КонецЕсли;
Рез = Рез+" ";
Вып = 0;
//имя
Если Прав(Имя,1) = "а" Тогда
Рез = Рез+Лев(Имя,СтрДлина(Имя)-1)+"е";
Вып = 1;
КонецЕсли;
Если Прав(Имя,1) = "я" Тогда
Рез = Рез+Лев(Имя,СтрДлина(Имя)-1)+"е";
Вып = 1;
КонецЕсли;
Если Прав(Имя,1) = "й" Тогда
Рез = Рез+Лев(Имя,СтрДлина(Имя)-1)+"ю";
Вып = 1;
КонецЕсли;
Если Прав(Имя,2) = "вь" Тогда
Рез = Рез+Лев(Имя,СтрДлина(Имя)-2)+"ви";
Вып = 1;
КонецЕсли;
Если Вып = 0 Тогда//не выполнено ни одно условие
Рез = Рез+Имя+"у";
КонецЕсли;
Рез = Рез+" ";
Вып = 0;
//отчество
Если Прав(Отч,1) = "а" Тогда
Рез = Рез+Лев(Отч,СтрДлина(Отч)-1)+"е";
Вып = 1;
КонецЕсли;
Если Прав(Отч,1) = "ч" Тогда
Рез = Рез+Отч+"у";
Вып = 1;
КонецЕсли;
Если Вып = 0 Тогда//не выполнено ни одно условие
Рез = Рез+Отч;
КонецЕсли;
Возврат Рез;
КонецФункции//ФИОВДательном(Фам,Имя,Отч)
← →
ЮРИЙ_К (2002-09-11 09:08) [5]Зачем голову ломать, когда уже все готовое есть
берешь библиотеку и пользуешься на здоровье. Проверено, работает отлично - огромная благодарность автору
http://www.delphikingdom.com/mastering/poligon/webpadeg.htm
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c