Главная страница
    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.01 c
1-73656
Sam Stone
2002-09-12 17:15
2002.09.23
closeup


14-73832
VictorT
2002-08-27 15:20
2002.09.23
база функций на этом сайте


1-73590
savrick
2002-09-12 02:39
2002.09.23
Как обновить рабочий стол?


3-73552
dihlos
2002-09-03 13:06
2002.09.23
Подскажите как?


4-73941
Squ
2002-07-31 15:49
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский