Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
1-73633
Slava V.
2002-09-12 15:33
2002.09.23
Как поместить НЕ ГЛАВНЫЕ окна программы в панель задач?


1-73749
Седен
2002-09-10 20:33
2002.09.23
Нужна помощь


8-73774
NeyronGreek
2002-05-22 10:30
2002.09.23
Воспроизведение видеоролика


3-73487
Den2
2002-08-28 20:55
2002.09.23
Как работает Refresh для баз Access?


7-73903
Work_NOV
2002-07-12 16:57
2002.09.23
Как сменить текущий каталог





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский