این فایل شامل رویه های 7.7 و 8.x است. یک رشته با فرمت نام خانوادگی نام نام خانوادگی به رویه ارسال می شود.
UPD 11/26/10: با تشکر - نسخه جدیدی از عملکرد. من تست نکردم! سوالات در مورد کار این نسخه - به او، به دلایلی او نمی خواهد آن را گسترش دهد :)
تابع CaseName (ValueName, Case=1,InitialsOnly=False, Value pDelimiter=".")
If TypeValue (نام کامل)<>سپس ("String") را تایپ کنید
Show("رشته نامعتبر ارسال شده به ""Full name case!"""); بازگشت نام کامل؛
EndIf
// حذف چند فاصله
در حالی که 1=1 حلقه
نام کامل = LP مخفف (StrReplace(Name, " ",""));
If Find(Name," ")=0 سپس EndIf را لغو کنید.
چرخه پایان
اگر TypeValue(Case)=Type("String") سپس
pad = AbbrLP(NReg(Lev(Case,1)));
اگر Find("irdwtp",pad)=0 سپس
EndIf
ElseIf TypeValue(Case)=Type("Number") سپس
اگر (مورد<1) или (Падеж>6) سپس
گزارش ("مورد نادرست به ""مورد نام کامل""!"); بازگشت نام کامل؛
EndIf
case=case-1;
EndIf
نام کامل=AblP(НReg(نام کامل)); // این راحت تر است
// تجزیه و تحلیل ترکیب خود
نام خانوادگی="";
برای d=1 بر اساس چرخه StrLength(Name).
chars=Average(نام کامل, th, 1);
نام خانوادگی=نام خانوادگی+شخصیت;
چرخه پایان
s=d+1; // از یک فاصله عبور کرد
نام = "";
chars=Average(نام کامل, th, 1);
If chars=" " Then Abort EndIf;
نام=نام+شخصیت;
چرخه پایان
s=d+1; // از فضای دوم عبور کنید
نام میانی="";
برای y=s با چرخه StrLength (نام کامل).
chars=Average(نام کامل, th, 1);
If chars=" " Then Abort EndIf;
نام وسط = نام وسط + نماد;
چرخه پایان
// اکنون نام خانوادگی، نام و نام خانوادگی را جداگانه داریم.
// بلوک تحلیل محتوای واقعی و مورد شروع می شود
// بازگشت اگر خودش اسمی باشد. اگر ReturnOnlyInitials تنظیم شده است، به حروف اول تبدیل کنید
If (Left(Case,1)="And") یا (Case=1) then
اگر NOT Initals Only یا Find(Name, ".") سپس
بازگشت نام کامل؛ // یا رشته قبلاً تبدیل شده است یا نیازی به تبدیل نیست
EndIf
NewName = TReg(نام خانوادگی) + " " + Vreg(Lev(Name,1)) + pSeparator + Vreg(Lev(نام وسط،1)) + pSeparator;
بازگشت SokrLP (نام کامل جدید)؛ // در صورتی که جداکننده یک فاصله باشد. آخرین برش
EndIf
// تجزیه و تحلیل جنسیت M/F
If Right(Patronymic,1)="a" Then Gender="F" Else Gender="M" EndIf;
// ساختار جدولی را ایجاد کنید که انتهای کلمات را ذخیره می کند
current=New ValueTable;
StringType=NewTypeDescription("String",NewStringQualifiers(3));
NumberType=NewTypeDescription("Number",NewNumberQualifiers(1,0));
current.Columns.Add("StarOk",StringType); // پایان قدیمی 2 کاراکتر
// ستون هایی که انتهای کلمات جدید را ذخیره می کنند
current.Columns.Add("p"); // والدین
current.Columns.Add("d"); // داتیو
current.Columns.Add("in"); // اتهامی
current.Columns.Add("t"); // خلاق
current.Columns.Add("n"); // حرف اضافه
// برای تعیین چند حرف از انتهای کلمه برای قطع کردن،
current.Columns.Add("NumberSlice",NumberType); // تعداد حروف بریده شده
صدادار = "aeeouiyyayu"; // لیستی از مصوت ها به عنوان یک رشته
// ======== پردازش نام خانوادگی ==========
// جدول را با داده های نام خانوادگی پر کنید
اگر جنسیت = "M" سپس
string=current.Add(); // ایوانف
string.StarOk="*s";
rows.CountSlice=0;
Row=current.Add(); // کراسینسکی
string.StarOk="*th";
string.r="wow"; string.d="mu"; line.in="th"; string.t="im"; string.p="ohm";
rows.CountSlice=2;
Row=current.Add(); // خداوند متعال
line.Starok="sch";
string.r="his"; string.d="به او"; string.in="his"; string.t="im"; string.p=" خوردن";
rows.CountSlice=2;
Row=current.Add(); // سفید
string.StarOk="th";
string.r="wow"; string.d="mu"; line.in="th"; string.t="th"; string.p="ohm";
rows.CountSlice=2;
Row=current.Add(); // رنگ پریده
string.StarOk="*th";
rows.CountSlice=1;
Row=current.Add(); // رابینوویچ
string.StarOk="*h";
rows.CountSlice=0;
Row=current.Add(); // تعمیرات، زالیزنیاک
string.StarOk="*k";
string.r="ka"; string.d="ku"; line.in="ka"; string.t="com"; string.p="ke";
rows.CountSlice=2;
Row=current.Add(); // شینکار
string.StarOk="*b";
string.r="i"; string.d="u"; string.in="i"; string.t="خوردن"; string.p="e";
rows.CountSlice=1;
Row=current.Add(); // پرلمن، اوگانسیان
string.StarOk="*n";
rows.CountSlice=0;
Row=current.Add(); // گوشت بره
string.StarOk="in";
string.r="a"; string.d="y"; line.in="a"; string.t="th"; string.p="e";
rows.CountSlice=0;
ElseIf Gender="F" سپس
string=current.Add(); // اسکلودوفسکایا
line.StarOk="th";
string.r="oops"; string.d="oops"; line.in="th"; string.t="oops"; string.p="oops";
rows.CountSlice=2;
Row=current.Add(); // ایوانووا
string.StarOk="*a";
string.r="oops"; string.d="oops"; line.in="y"; string.t="oops"; string.p="oops";
rows.CountSlice=1;
EndIf
اگر نه EmptyString (LastName) سپس
pb=Right(نام خانوادگی,3); count="StarOk"; // دنبالش بگرد
newLastName=نام خانوادگی; // اگر چیزی تغییر نکرد، همینطور باشد
stro=current.Find(pb, count);
اگر به شدت<>
در غیر این صورت
// اکیداً توسط سه کاراکتر آخر یافت نشد، ما به دنبال دو کاراکتر فقط برای آخرین کاراکتر هستیم
pb=Right(Lastname,2);
stro=current.Find(pb, count);
اگر به شدت<>تعریف نشده سپس
Stem=Lev(LastName, StrLength(Last Name)-stro.CountSlice);
newLastName=Base+Abb(stro[pad]);
در غیر این صورت // اگر دو مورد پیدا نشد، ما به دنبال یکی هستیم
pb="*"+Right(pb,1);
stro=current.Find(pb, count);
اگر به شدت<>
Stem=Lev(LastName, StrLength(Last Name)-stro.CountSlice);
newLastName=Base+Abb(stro[pad]);
stro=current.Find(pb, count);
اگر به شدت<>تعریف نشده سپس // با دید پیدا شد
Stem=Lev(LastName, StrLength(Last Name)-stro.CountSlice);
newLastName=Base+Abb(stro[pad]);
EndIf
EndIf
EndIf
EndIf
در غیر این صورت
newLastname="";
EndIf
// ======== پردازش نام ==========
// جدول را با داده های نام پر کنید
current.Clear();
اگر جنسیت = "M" سپس
// کنترل استثناها
If Name="lion" then Name="lion" EndIf;
If Name="paul" then Name="paul" EndIf;
Row=current.Add(); // سرگئی
string.starok="*th";
string.r="i"; string.d="u"; string.in="i"; string.t="خوردن"; string.p="e";
row.cutoff=1;
Row=current.Add(); // ایوان + لو + پاول
string.starok="*s";
string.r="a"; string.d="y"; line.in="a"; string.t="اهم"; string.p="e";
row.cutoff=0;
Row=current.Add(); // نیکیتا
string.starok="*a";
row.cutoff=1;
Row=current.Add(); // تعظیم
string.starok="ka";
row.cutoff=1;
Row=current.Add(); // ارمیا
string.starok="ia";
row.cutoff=1;
Row=current.Add(); // ایلیا
string.starok="*i";
row.cutoff=1;
Row=current.Add(); // ایگور
string.starok="*ь";
string.r="i"; string.d="u"; string.in="i"; string.t="خوردن"; string.p="e";
row.cutoff=1;
ElseIf Gender="F" سپس
// کنترل استثناها
//If Name="olga" then Name="olga" EndIf;
Row=current.Add(); // ایرینا
string.starok="*a";
string.r="s"; string.d="e"; line.in="y"; string.t="oops"; string.p="e";
row.cutoff=1;
Row=current.Add(); // اینگا، اولگا
string.starok="ha";
string.r="and"; string.d="e"; line.in="y"; string.t="oops"; string.p="e";
row.cutoff=1;
Row=current.Add(); // استر
string.starok="*ь";
string.r="and"; string.d="and"; line.in="b"; string.t="w"; string.p="and";
row.cutoff=1;
Row=current.Add(); // ماریا
string.starok="ia";
string.r="and"; string.d="and"; line.in="u"; string.t="her"; string.p="and";
row.cutoff=1;
Row=current.Add(); // سوفیا
string.starok="*i";
string.r="and"; string.d="e"; line.in="u"; string.t="her"; string.p="e";
row.cutoff=1;
EndIf
// جدول پر است. 2 حرف آخر را بشمار و به دنبال آنها بگرد
اگر نه EmptyString (Name) سپس
pb=Right(Name,2); count="StarOk"; // دنبالش بگرد
newName=نام; // اگر چیزی تغییر نکرد، همینطور باشد
stro=current.Find(pb, count);
اگر به شدت<>تعریف نشده سپس // بلافاصله سخت یافت شد
در غیر این صورت // به شدت یافت نشد، ما فقط به دنبال آخرین مورد هستیم
pb="*"+Right(pb,1);
stro=current.Find(pb, count);
اگر به شدت<>تعریف نشده سپس // توسط آخرین پیدا شد
Base=Lev(Name, StrLength(Name)-str. Count Slice);
newName=base+abbrlp(stro[pad]);
در غیر این صورت // آخرین مورد پیدا نشد، ما به دنبال حروف بر اساس نوع هستیم
pb="*"+?(Find(Vowers,Right(pb,1))=0,"s","g");
stro=current.Find(pb, count);
اگر به شدت<>Undefined=1 سپس // بر اساس نوع پیدا شد
Base=Lev(Name, StrLength(Name)-str. Count Slice);
newName=base+abbrlp(stro[pad]);
EndIf
EndIf
EndIf
در غیر این صورت
newName="";
EndIf
// ======== بیایید نام پدر را پردازش کنیم، اینجا راحت تر است ==========
current.Clear();
اگر جنسیت = "M" سپس
string=current.Add();
string.r="a"; string.d="y"; line.in="a"; string.t="خوردن"; string.p="e";
row.cutoff=0;
ElseIf Gender="F" سپس
string=current.Add();
string.r="s"; string.d="e"; line.in="y"; string.t="oops"; string.p="e";
row.cutoff=1;
EndIf
اگر نه EmptyString (پترونوم) سپس
پایه \u003d لئو (پترونم، طول (نام پدر) - فعلی. تعداد برش ها؛
newPatronymic name = Base + LP مختصر ([pad] فعلی)؛
در غیر این صورت
new patronymic="";
EndIf
IfOnlyInitials سپس
newName=شیر(newName,1); newPatronymic=شیر(newPatronymic,1);
EndIf
// حروف اول را روی حروف بزرگ تنظیم کنید
newLastName=ВReg(Lev(newLastName,1))+Mid(newLastName,2);
newName=ВReg(Lev(newName,1))+Average(newName,2);
newPatronymic=ВReg(Lev(newPatronymic,1))+Mid(newPatronymic,2);
// و اکنون همه چیز با هم است
If InitialsOnly سپس // if Initials قالب مشخص شده است
newName=newLastName+" "+newName+pSeparator+newPatronymic+pSeparator;
در غیر این صورت
newName=newSurname+" "+newName+" "+newPatronymic;
EndIf
اگر Find (نام کامل، ".") سپس // در صورتی که پارامتر ورودی نام خانوادگی با حروف اول باشد. به حروف اول دست نزنید
newName = newLastname + " " + Treg(نام) + Treg(نام خانوادگی);
EndIf
بازگشت SokrLP (نام کامل جدید)؛
EndFunctions
در اینجا می توانید پاسخ سوالات مربوط به Microsoft Excel را دریافت کنید | 57638 | 471543 | ||
44519 | 357828 | |||
موضوعات برجسته از انجمن اصلی | 14 | 80 | ||
اگر صاحب مک خوشحال هستید 😉 | 217 | 1059 |
21 سپتامبر 2018 06:21:34 |
|
بخش برای قرار دادن پرداخت شدهسوالات، پروژه ها و وظایف و جستجوی مجری برای آنها. | 2100 | 13379 | ||
اگر افزونه PLEX را برای Microsoft Excel دانلود یا خریداری کرده اید و سؤال یا درخواستی دارید، لطفاً اینجا را کلیک کنید. | 310 | 1587 | ||
808 | 11620 | |||
بحث در مورد عملکرد، قوانین و غیره | 269 | 3464 | ||
اکنون آنلاین (مهمانان: 590، کاربران: 12، از این تعداد پنهان: 3)
امروز تولد (37)، (32)، (28)، (37)، (36)، (52) است.
تعداد کل کاربران ثبت نام شده: 83105
در بحث شرکت کرد: 31843
تعداد موضوعات: 105875
نزول حروف بزرگ در اکسل
در فصل زبان ها و فن آوری های دیگربه این سوال که آیا می توان به طور خودکار اسامی را در قالب اکسل که توسط نویسنده ارائه شده است، ایجاد کرد؟ زفربهترین پاسخ این است روز خوب.
اگر در مورد نام کامل، عناوین شغلی یا بخش ها صحبت می کنیم، می توانید. درست است، این یک ابزار بیشتر برای توسعه دهنده است. با این حال، کاربر نیز می تواند آن را کشف کند. نمونه ها حاوی ماکروهای آماده برای اکسل هستند.
موفق باشید!
PS کلید "انحراف نام خانوادگی، نام و نام خانوادگی بر اساس موارد" را در گوگل جستجو کنید
22 پاسخ
هی! در اینجا مجموعه ای از موضوعات با پاسخ به سؤال شما آورده شده است: آیا می توان به طور خودکار اسامی را در قالب اکسل ایجاد کرد؟
پاسخ از فلاش
خیر، این ویژگی در اکسل پشتیبانی نمی شود. اما برای یک مورد خاص، می توانید از تابع IF برای انتخاب یک یا گزینه دیگر استفاده کنید.
پاسخ از پروسنیوم
شما در دسته "برنامه نویسی" هستید، بنابراین هیچکس نمی تواند شما را از نوشتن تابع خود در VBA منع کند که این کار خیریه را انجام می دهد. و فقط حل مشکل در این قالب کاملا واقعی است.
پاسخ از تعمید دادن
من شنیدم که اصلاحات زبان روسی به پایان رسیده است ، اما حتی نمی توانستم تصور کنم "اسم ها در قالب اکسل" را معرفی کنم)))))))
تابع سفارشی برای MS Excel
انحراف نام کامل بر اساس موارد
این تابع به شما امکان می دهد نام خانوادگی، نام و نام خانوادگی را که در حالت اسمی آورده شده است را در قالب هر مورد دیگر نمایش دهید.
حوزه کاربرد:
استفاده از این تابع برای خودکارسازی تولید اسناد در MS Excel (یا تسهیل ایجاد آنها به صورت دستی) راحت است، که در آن نام کامل باید به صورت نامی نشان داده نشود: انواع مختلف قراردادها، سفارشات نقدی، رسیدها، اعمال مصالحه، سفارشات ، پروتکل ها، وکالتنامه ها و غیره
اگر ابزارهای اتوماسیون تشکیل اسناد فوق را در برنامه MS Word بر اساس داده های جداول MS Excel پیاده سازی کنند، این عملکرد نیز ضروری است.
نمونه هایی از استفاده:
- در قرارداد: «در شخص رئیس بارانوف پتر ویاچسلاوویچ«
- در ضمانت نامه های نقدی: «صدور گناتیوک پاول واسیلیویچ"،" دریافت شده از گریتسنکو ایرینا سرگیونا«
- در وکالتنامه آمده است: «مدیریت وسیله نقلیه را به عهده من میگذارم اسمیرنیتسکی ویتالی والریویچ«
- به ترتیب: «انتصاب استپاشووا اولگا نیکولایونا«
- در صورتجلسه آمده است: «گزارش تنظیم شد دوورژتسکی نیکیتا ایوانوویچ«
آنچه اجرا می شود:
- نامهای خانوادگی با تمام پایانهای مشترک "-ov"، "-ev"، "-in"، "-yan (ts)"، "-sky (-tsky)"، "-sky (-tsky)" به درستی رد میشوند. "-th"، "-th"، "-آنها"، "-ets"، "-nko"، "-uk"، "-yuk"، "-ich"، "-iya"، و غیره: پاولوف، زینوویف، گاگارین، پتروسیان، ویسوتسکی، تروبتسکوی، تسوی، زادوروژنی، سادوونیچی، سدیخ، دولگیخ، سوسکووتس، نسترنکو، گونچاروک، دانیلیوک، رابینوویچ، دانلیا، کواشا، وروبل، کوزاک، کازاکوک و همچنین نامهای زن مربوطه.
- تفاوت در انحراف نام خانوادگی مرد و زن در نظر گرفته می شود: بافنده ویکتور و ویور سوتلانا، کوزووتس آنتون و کوزووتس اکاترینا
- نام خانوادگی ترکیبی به درستی پردازش می شود: به عنوان مثال، مامین-سیبیریاک، سالتیکوف-شچدرین، نمیروویچ-دانچنکو، لبدف-کوماچ
- نام خانوادگی خارجی کاهش نمی یابد: Galois، Morois، Defoe، Dali، Meringue، Verdi، Garcia، Hemingway و غیره.
- نام های نام خانوادگی با ذرات "-ogly"، "-kyzy"، "ibn" با موفقیت پردازش می شوند: ممدوف پولاد مرتضی اوغلو -> ممدوف پولاد مرتضی اوغلو، گسان عبدالرخمان بن خطاب -> حسن عبدالرخمان بن خطاب، ابوعلی بن سینا -> ابوعلی بن سینا -> ابوعلی ابن سینا
- جنسیت (مرد/مونث) به طور خودکار با نام پدر تعیین می شود و بر این اساس قوانین انحراف مناسب انتخاب می شود.
- برای موقعیت هایی که تعیین جنسیت به طور خودکار دشوار است (نام میانی خارجی است یا وجود ندارد)، می توانید جنسیت را به عنوان پارامتر تابع مشخص کنید.
- خروجی به صورت خلاصه شده "نام خانوادگی + حروف اول" امکان پذیر است: Polozov N. A.، Vasilyeva A. K.، Dvorzhetsky E. E.
- امکان استفاده به عنوان روبناها(قابل استفاده در تمامی فایل های این محل کار) و در فرم کد تعبیه شده در فایل(این تابع در هر محل کار در این فایل کار می کند - برای مثال اگر فایل به طرف مقابل ارسال شود راحت است)
- کد منبع باز - در صورت تمایل، می توانید الگوریتم را مطالعه کرده یا آن را اصلاح کنید
چگونگی اتصال؟
این برنامه یک فایل تکی به نام است bdgFIOPropisyu.bas. برای استفاده از آن در یک فایل خاص، تابع باید به این فایل وارد شود. برای این شما نیاز دارید:
- فایل MS Excel را در جایی که می خواهید از تابع استفاده کنید باز کنید
- با فشار دادن کلید داغ "Alt + F11" یا از طریق منو وارد ویرایشگر VBA شوید:
- در منوی اصلی ویرایشگر VBA، مورد "File" -> "Import file ..." را انتخاب کنید:
- در پنجره انتخاب فایل که ظاهر می شود، فایل را انتخاب کنید bdgFIOPropisyu.basو روی دکمه "Open" کلیک کنید:
همه چیز، کد برنامه وارد شده و می توان از آن استفاده کرد.
چگونه استفاده کنیم؟
در اینجا چند نمونه دیگر از کاربرد آن آورده شده است:
موقعیت هایی که یک تابع ممکن است کار کند غلط:
علیرغم این واقعیت که شرایط بسیار کمی وجود دارد که عملکرد تابع ممکن است رضایت بخش نباشد، احتمال مواجهه با چنین نام کاملی در کار عملی بسیار کم است، زیرا در 99.9٪ موارد، نام خانوادگی یافت شده در قلمرو روسیه بر اساس قوانین کلی رد می شود.
علاوه بر این، لازم به ذکر است که سایر الگوریتم ها و برنامه ها نیز نمی توانند صحت نتیجه را در 100٪ موارد تضمین کنند - زبان روسی بسیار بزرگ و قدرتمند است که با مجموعه ای از قوانین منطقی توصیف شود (در مورد تأثیر موقعیت تاکید در کلمه، منشأ نام خانوادگی، در مورد وابستگی نوشتن شکل زن نام خانوادگی از نوشتن فرم مذکر و غیره).
- طبق قوانین زبان روسی، انحطاط مرد و زن زبان خارجینامهای خانوادگی که به «-a» و «-ya» ختم میشوند به محل تاکید در کلمه و ریشه نام خانوادگی بستگی دارد.
تمام نام های خانوادگی به بدون تاکید"-a" بعد از صامت ها تنزل پیدا می کنند: Seneca -> Seneca، Petrarch -> Petrarch، Smetana -> Smetana، Kurosawa -> Kurosawa، Glinka -> Glinka، Okudzhava -> Okudzhava و غیره. انحراف نام های خانوادگی با شوکه شدن"-a" در پایان به منشأ آن بستگی دارد: نامهای خانوادگی با منشاء فرانسوی متمایل نیستند: Dumá، Degá، Fermá، Petipá و غیره، نامهای خانوادگی دیگر (از زبانهای اسلاوی و شرقی) متمایل هستند: Mitta -> Mitty، کواشا -> کواشی، ماهی تابه -> ماهیتابه، پوکر -> پوکر، حمزه -> حمزه و غیره.
به همین ترتیب، نامهای خانوادگی با منشأ فرانسوی با "-ya" تاکیدی در پایان غیرقابل توصیف هستند: Zola، Troyat. همه نامهای خانوادگی دیگر در "-ya" رد شدهاند: Golovnya -> Golovny، Danelia -> Danilia، Beria -> Beria، Goya -> Goya.
از آنجایی که تعیین موقعیت استرس و منشاء نام خانوادگی به صورت برنامهای غیرممکن است، الگوریتم برنامه فرض میکند که همه این نامهای خانوادگی طبق قوانین کلی رد میشوند. بنابراین، نام خانوادگی فرانسوی با لهجه در پایان به اشتباه توسط برنامه پردازش می شود: Dumas -> Dumas، Zola -> Zoli، Petipa -> Petipa. - نامهای خانوادگی مردانه که به «-y»، «-y»، «-oy» ختم میشوند مانند صفتهای Gorky -> Gorky, Blessed -> Blessed, Armored -> Armored حذف میشوند. استثناء مواردی است که نام خانوادگی با چنین پایانی یک اسم رایج (Kozodoy، Vodopoy، Genii، Scenario) یا در اصل خارجی باشد (Tsoi، Tskhoi، Choi). از آنجایی که نمی توان از نظر برنامه ای تعیین کرد که آیا نام خانوادگی چنین استثنایی است یا خیر، به طور متعارف پذیرفته شده است که همه نام های خانوادگی با پایان های "-y"، "-y"، "-y" به عنوان صفت رد می شوند. در اکثریت قریب به اتفاق موارد، این درست است، با این حال، در موارد استثنایی با نام خانوادگی-اسم، نتیجه عملکرد اشتباه خواهد بود: Kozodoy Yakov -> Goat Yakov، Genius Stefan -> Genego Stefan.
با این حال، به عنوان یک استثنا، الگوریتم انحطاط نامهای خانوادگی با این پایانها و طول کمتر از 5 حرف (عمدتاً در اصل کرهای) را در نظر میگیرد: Tsoi Viktor -> Tsoi Viktor. - در برخی موارد، انحراف صحیح نام خانوادگی زن که به "-ina"، "-ova" ختم می شود، تنها در صورتی امکان پذیر است که انحراف نام خانوادگی مرد مربوطه مشخص باشد: Zhemchuzhina Lyudmila، Malina Svetlana را می توان به شکل معمول رد کرد: Zhemchuzhina Lyudmila -> Zhemchuzhina Lyudmila، Malina Svetlana -> Malina Svetlana (اگر نام خانوادگی مرد مربوطه، به عنوان مثال، Zhemchuzhin Boris و Malin Oleg باشد) و به صورت اسم: Zhemchuzhina Lyudmila -> Zhemchuzhina S Lyudmilaina, Malinaina مالینا سوتلانا (اگر نام خانوادگی مردانه باشد، به عنوان مثال، ژمچوژینا بوریس و مالینا اولگ).
در نظر گرفتن چنین تفاوت های ظریف در الگوریتم غیرممکن است، بنابراین همه نام های خانوادگی زن توسط تابع طبق قوانین یکسان (به عنوان صفت ها) پردازش می شوند، که در برخی موارد می تواند منجر به نتایج نادرست شود. - وضعیت مشابهی در مورد نامهای خانوادگی مرد و زن است که به "-ov (a)"، "-ev (a)"، "-in (a)" ختم میشوند، که با یک اسم مشترک همنام هستند: Borov، Lev، Filin، Barin. ، کوروف، جغد، نقاشی، پر، دوران باستان و غیره). هیچ راهی برای تعیین هویت نام خانوادگی و اسم با هیچ علامت رسمی وجود ندارد، بنابراین انحطاط این نام خانوادگی طبق قوانین کلی یکسان منجر به نتایج نادرست شکل می شود: Lev Pavel -> Levy Pavel, Filin Sergey -> فیلین سرگئی، کوروف کسنیا -> کورووایا کسنیا، جغد اولگا -> جغد اولگا، نقاشی آلا -> نقاشی آلا.
- نامهای خانوادگی مردانه که به علامت نرم ختم میشوند به این موارد تمایل دارند: Vrubel Mikhail -> Vrubel Mikhail، Gogol Nikolai -> Gogol Nikolai و غیره. با این حال، هنگام کاهش، انتهای چنین نامهای خانوادگی بستگی به نوع اسمهایی دارد - مذکر، مؤنث یا وسط.
تعیین جنسیت یک اسم به صورت الگوریتمی امکان پذیر نیست، بنابراین، در مواردی که نام خانوادگی مذکر اسمی از جنس مونث یا خنثی باشد، این تابع به درستی کار نمی کند: Stal Ivan -> Stal Ivan, Wormwood Victor -> Wormwood ویکتور - تشکیل پرونده ابزاری نامهای خانوادگی که به "-zha"، "-tsa"، "-cha"، "-sha"، "-sha" ختم میشوند به تاکید در کلمه بستگی دارد: اگر این پایان بدون تاکید باشد، پس وقتی انحراف آن به "-ey" تغییر می کند: Kapitsa Peter -> Kapitsa Peter, Cloud Fedor -> Cloud Fedor; اگر پایان تاکید شود، با "-oy" جایگزین می شود: Kvasha Igor -> Kvasha Igor، Candle Ivan -> Candle Ivan. وضعیت با نامهای خانوادگی که به «-ets» ختم میشوند، مشابه است: بدون استرس، پایان به «-em» تغییر میکند: Palets Viktor -> Finger Viktor. تحت استرس - روی "-th": Soskovets Oleg -> Soskovets Oleg.
همانطور که در بالا ذکر شد، تعیین برنامهای موقعیتهای استرس در یک کلمه غیرممکن است، بنابراین، الگوریتم برنامه فرض میکند که در کلماتی که به "-zha"، "-tsa"، "-cha"، "-sha"، "" ختم میشوند. -sha" ، پایان بدون تاکید است (از این قبیل کلمات بیشتر است) ، یعنی حالت ابزاری همیشه با پایان "-ey" تشکیل می شود. برعکس، در کلماتی که به «ets» ختم می شوند، فرض بر این است که پایان تحت فشار است، یعنی انحطاط با پایان «-om» خواهد بود. بر این اساس، در موارد دیگر، خطاهای فرم مشاهده خواهد شد: ایگور کوشا، ایوان سوچی، ویکتور فینگر. - طبق قوانین زبان روسی، اگر بتوان از یک نام خانوادگی دوگانه روسی استفاده کرد، قسمت اول رد می شود: اثر مامین-سیبیریاک، داستان سالتیکوف-شچدرین، اپرای ریمسکی-کورساکوف و غیره. . در غیر این صورت، تغییری نمی کند: نقاشی ون دایک، ماجراهای دون خوان، جادوگر دن کیشوت، و غیره. بنابراین، به عنوان مثال، در نام خانوادگی Semenov-Tyan-Shansky، قسمت اول متمایل است، اما نه دوم: آثار سمنوف-تیان-شانسکی.
باز هم، از نظر الگوریتمی نمی توان تعیین کرد که آیا جزء نام خانوادگی مستقل است، بنابراین، برای کار فرض می شود که تمام قسمت های نام خانوادگی ترکیبی باید رد شود (در بیشتر موارد این مورد است)، که در یک تعداد موقعیت ها منجر به خطا می شود: ون دایک، دونا - کیشوت، سمیونوف-تیان-شانسکی. - نامهای خانوادگی خارجی که به «-ov» و «-in» در ابزاری ختم میشوند، پایان را به «-om» تغییر میدهند: بنجامین فرانکلین، چارلز داروین، چارلی چاپلین، الکساندر گرین. نام های خانوادگی "روسی" با پایان های مشابه به "-y" ختم می شود: ایوانف، گاگارین، فونویزین و غیره. علیرغم این واقعیت که نام خانوادگی ذکر شده در بالا (فرانکلین، داروین، چاپلین، گرین) به عنوان استثنا در الگوریتم در نظر گرفته شده است، احتمال کمی وجود دارد که هر نام خانوادگی مشابه خارجی دیگری رخ دهد - در این مورد، نتیجه تابع نادرست خواهد بود.
قوانین انحراف نام خانوادگی و نام مطابق با بخش های 13.1 و 13.2 کار N. A. Eskova استفاده می شود. اشکال در عطف اسم. مطالب آموزشی و روش شناختی تمرینات عملی درس "زبان چاپ مدرن"(کمیته مطبوعات دولتی اتحاد جماهیر شوروی. موسسه همه اتحادیه برای آموزش پیشرفته کارگران چاپ. M.، 1990).
قیمت: 1500 روبل