Skloňování příjmení na aksess. Jak skloňovat malá a velká písmena v Excelu? Situace, kdy funkce nemusí fungovat správně

Soubor obsahuje procedury pro 7.7 a 8.x. Proceduře je předán řetězec ve formátu Příjmení Jméno Patronymické.

UPD 26.11.10: s vděčností - nová verze funkce. Netestoval jsem! Otázky ohledně práce této verze - na něj, z nějakého důvodu to nechce šířit :)

Funkce CasesFULLNAME (Celý název hodnoty, Cases = 1, OnlyInitials = False, Hodnota nSeparator = ".")
If TypeZnch (celé jméno)<>Poté zadejte („String“)
Zpráva ("Neplatný řetězec předán" "celému názvu případu!" ""); Návrat celého jména;
EndIf;

// odstranění více mezer
Zatímco 1 = 1 cyklus
Celé jméno = Zkratka (StrReplace (celé jméno, "", ""));
If Find (celé jméno, "") = 0 Then Abort EndIf;
Konec cyklu;

If TypeZnch (Case) = Type ("String") Then
podložka = SocrLP (NReg (Leo (případ, 1)));
Pokud Najít ("irdvtp", pad) = 0 Pak

EndIf;
ElseIf TypeZnch (Case) = Type ("Number") Then
Pokud (Případ<1) или (Падеж>6) Potom
Zpráva ("Nesprávná velikost písmen předána" "název případu" "!"); Návrat celého jména;
EndIf;
podložka = Případ-1;
EndIf;

Celé jméno = Zkratka pro LP (NReg (celé jméno)); // to je pohodlnější

// váš vlastní analyzátor složení
Příjmení = "";
Pro d = 1 By Str Length (celý název) Cyklus
symboly = Middle (celé jméno, d, 1);

Příjmení = Příjmení + znaky;
Konec cyklu;
s = d + 1; // překročil prostor
Jméno = "";

symboly = Middle (celé jméno, d, 1);
If char = "" Then Abort EndIf;
Jméno = Jméno + znaky;
Konec cyklu;
s = d + 1; // překročil druhou mezeru
Prostřední jméno = "";
For d = s By Str Length (celé jméno) Cyklus
symboly = Middle (celé jméno, d, 1);
If char = "" Then Abort EndIf;
Patronymic = Patronymic + symboly;
Konec cyklu;

// nyní máme oddělené Příjmení, Jméno a Patronymie.
// začíná skutečný blok pro analýzu obsahu a případů

// návrat, pokud je sám nominativní. Pokud je nastaveno vrácení OnlyInitials, převeďte na iniciály
Jestliže (Leo (Případ, 1) = "A") nebo (Případ = 1) Pak
Pokud NE pouze iniciály nebo Najít (celé jméno, "."), tak
Návrat celého jména; // buď již převedený řetězec, nebo není třeba převádět
EndIf;
Nové CELÉ JMÉNO = TREG (Příjmení) + "" + Vreg (Lev (Jméno, 1)) + pSeparator + Vreg (Leo (Patronymic, 1)) + pSeparator;
Návrat SokrLP (nové celé jméno); // v případě, že oddělovačem je mezera. Poslední jsme nakrájeli
EndIf;

// analýza pohlaví M / Ž
If Right (Patronymic, 1) = "a" Then Gender = "F" Jinak Gender = "M" EndIf;

// vytvoří strukturu tabulky, která ukládá koncovky slov
aktuální = Nová tabulka hodnot;
StringType = NewTypeDescription ("String", NewStringQualifiers (3));
NumberType = NewTypeDescription ("Number", NewNumber Qualifiers (1,0));
current.Columns.Add ("StarOk", LineType); // stará koncovka 2 znaky
// sloupce ukládající nové koncovky slov
current.Columns.Add ("p"); // genitiv
current.Kolonki.Add ("d"); // dativ
current.Columns.Add ("v"); // akuzativ
current.Columns.Add ("t"); // tvůrčí
current.Kolonki.Add ("p"); // předložkový
// k označení, kolik písmen z konce slova se má odříznout,
current.Columns.Add ("NumberSection", NumberType); // počet vyříznutých písmen

Samohlásky = "aeeooiyyayuyu"; // seznam samohlásek jako řetězec

// ======== zpracovat příjmení ==========
// vyplňte tabulku údaji pro příjmení

Pokud pohlaví = "M" Pak
řetězec = aktuální.Přidat (); // ivanov
line.StarOk = "* s";

line.ColvoSlice = 0;

Tah = aktuální. Přidat (); // krasinsky
line.StarOk = "* th";
line.r = "wow"; line.d = "ohmu"; line.v = "wow"; line.t = "oni"; line.p = "ohm";
řádek.MnožstvíSekce = 2;

Tah = aktuální. Přidat (); // všemohoucí
line.StarOk = "stydlivý";
line.r = "on"; stotok.d = "on"; line.in = "on"; line.t = "oni"; line.p = "jíst";
řádek.MnožstvíSekce = 2;

Tah = aktuální. Přidat (); // Bílá
line.StarOk = "th";
line.r = "wow"; line.d = "ohmu"; line.v = "wow"; line.t = "ym"; line.p = "ohm";
řádek.MnožstvíSekce = 2;

Tah = aktuální. Přidat (); // bledý
line.StarOk = "* th";

řádek.MnožstvíSekce = 1;

Tah = aktuální. Přidat (); // Rabinovič
line.StarOk = "* h";

line.ColvoSlice = 0;

Tah = aktuální. Přidat (); // opravuje, slimák
line.StarOk = "* do";
line.r = "ka"; line.d = "ku"; line.v = "ka"; line.t = "com"; line.p = "ke";
řádek.MnožstvíSekce = 2;

Tah = aktuální. Přidat (); // shinkar
line.StarOk = "* b";
strotok.r = "i"; stotok.d = "u"; line.v = "i"; line.t = "jíst"; řádek.p = "e";
řádek.MnožstvíSekce = 1;

Tah = aktuální. Přidat (); // perelman, oganesyan
line.StarOk = "* n";

line.ColvoSlice = 0;

Tah = aktuální. Přidat (); // barankin
line.StarOk = "v";
line.r = "a"; line.d = "y"; line.v = "a"; line.t = "ym"; řádek.p = "e";
line.ColvoSlice = 0;

ElseIf Pohlaví = "F" Potom
řetězec = aktuální.Přidat (); // sklodovskaja
line.StarOk = "th";
line.r = "ach"; line.d = "ach"; line.v = "yu"; line.t = "ach"; line.p = "ach";
řádek.MnožstvíSekce = 2;

Tah = aktuální. Přidat (); // ivanova
line.StarOk = "* a";
line.r = "ach"; line.d = "ach"; line.v = "y"; line.t = "ach"; line.p = "ach";
řádek.MnožstvíSekce = 1;
EndIf;


If Not EmptyString (Last Name) Then
pb = Právo (Příjmení, 3); počet = "StarOk"; // vyhledejte to
newSurname = Příjmení; // pokud se nic nezmění, změní se
str = aktuální Najít (pb, počet);
Pokud str<>


v opačném případě
// striktně nenalezeno podle posledních tří znaků, hledat podle dvou znaků pouze podle posledního
pb = Právo (Příjmení, 2);
str = aktuální Najít (pb, počet);
Pokud str<>Nedefinováno Potom
Základ = Lev (Příjmení, StrLength (Příjmení) -str. ColvoSection);
novéPříjmení = Základ + SokrLP (stro [pad]);
Jinak // pokud jsme nenašli dva, hledejte jeden po druhém
pb = "*" + vpravo (pb, 1);
str = aktuální Najít (pb, počet);
Pokud str<>
Základ = Lev (Příjmení, StrLength (Příjmení) -str. ColvoSection);
novéPříjmení = Základ + SokrLP (stro [pad]);


str = aktuální Najít (pb, počet);
Pokud str<>Undefined Potom // nalezeno podle typu
Základ = Lev (Příjmení, StrLength (Příjmení) -str. ColvoSection);
novéPříjmení = Základ + SokrLP (stro [pad]);
EndIf;
EndIf;
EndIf;
EndIf;
v opačném případě
novéPříjmení = "";
EndIf;

// ======== zpracovat jméno ==========
// vyplňte tabulku údaji pro jméno
proud.Vymazat ();

Pokud Pohlaví = "M" Pak
// zpracovává výjimky
If Name = "lev" Then Name = "lev" EndIf;
If Name = "paul" Then Name = "paul" EndIf;

Tah = aktuální. Přidat (); // Sergej
line.old = "* th";
strotok.r = "i"; stotok.d = "u"; line.v = "i"; line.t = "jíst"; řádek.p = "e";
line.coouction = 1;

Tah = aktuální. Přidat (); // ivan + lev + pavel
line.old = "* s";
line.r = "a"; line.d = "y"; line.v = "a"; strotok.t = "ohm"; řádek.p = "e";
line.colvoice = 0;

Tah = aktuální. Přidat (); // nikita
line.old = "* a";

line.coouction = 1;

Tah = aktuální. Přidat (); // luk
line.old = "ka";

line.coouction = 1;

Tah = aktuální. Přidat (); // Jeremiáš
line.old = "ia";

line.coouction = 1;

Tah = aktuální. Přidat (); // ilya
line.old = "* i";

line.coouction = 1;

Tah = aktuální. Přidat (); // Igore
line.old = "* b";
strotok.r = "i"; stotok.d = "u"; line.v = "i"; line.t = "jíst"; řádek.p = "e";
line.coouction = 1;

ElseIf Pohlaví = "F" Potom
// zpracovává výjimky
// If Name = "Olga" Then Name = "Olga" EndIf;

Tah = aktuální. Přidat (); // Irina
line.old = "* a";
line.r = "s"; řádek.d = "e"; line.v = "y"; line.t = "ach"; řádek.p = "e";
line.coouction = 1;

Tah = aktuální. Přidat (); // Inga, Olga
line.old = "ha";
line.r = "a"; řádek.d = "e"; line.v = "y"; line.t = "ach"; řádek.p = "e";
line.coouction = 1;

Tah = aktuální. Přidat (); // Esther
line.old = "* b";
line.r = "a"; line.d = "a"; řádek.v = "b"; line.t = "nový"; line.p = "a";
line.coouction = 1;

Tah = aktuální. Přidat (); // Maria
line.old = "ia";
line.r = "a"; line.d = "a"; line.v = "u"; strotok.t = "ona"; line.p = "a";
line.coouction = 1;

Tah = aktuální. Přidat (); // Sofie
line.old = "* i";
line.r = "a"; řádek.d = "e"; line.v = "u"; strotok.t = "ona"; řádek.p = "e";
line.coouction = 1;
EndIf;

// stůl je plný. spočtěte poslední 2 písmena a hledejte je
If Not EmptyString (Name) Then
pb = Right (Jméno, 2); počet = "StarOk"; // vyhledejte to
newName = Jméno; // pokud se nic nezmění, změní se
str = aktuální Najít (pb, počet);
Pokud str<>Undefined Potom // okamžitě nalezen přísný


Jinak // striktně nenalezeno, hledáme pouze podle posledního
pb = "*" + vpravo (pb, 1);
str = aktuální Najít (pb, počet);
Pokud str<>Undefined Then // nalezen last
Base = Leo (Jméno, StrLength (Name) -string.ColvoSection);
newName = Základ + SokrLP (stro [pad]);
Jinak // nenašli jsme poslední, hledáme písmena
pb = "*" +? (Najít (samohlásky, vpravo (pb, 1)) = 0, "s", "g");
str = aktuální Najít (pb, počet);
Pokud str<>Nedefinováno = 1 Potom // nalezeno podle typu
Base = Leo (Jméno, StrLength (Name) -string.ColvoSection);
newName = Základ + SokrLP (stro [pad]);
EndIf;
EndIf;
EndIf;
v opačném případě
newName = "";
EndIf;

// ======== zpracuj prostřední jméno, tady je to jednodušší ==========
proud.Vymazat ();

Pokud Pohlaví = "M" Pak
řetězec = aktuální.Přidat ();
line.r = "a"; line.d = "y"; line.v = "a"; line.t = "jíst"; řádek.p = "e";
line.colvoice = 0;
ElseIf Pohlaví = "F" Potom
řetězec = aktuální.Přidat ();
line.r = "s"; řádek.d = "e"; line.v = "y"; line.t = "ach"; řádek.p = "e";
line.coouction = 1;
EndIf;
If Not Empty String (Patronymic) Then
Základ = Lev (Patronym, Str Délka (Patronym) -tok.KolvoSrez);
nové patronymium = Základ + SokrLP (aktuální [pad]);
v opačném případě
nové patronymium = "";
EndIf;

If Only Iniciály Pak
novéJméno = Lev (novéJméno, 1); nové patronymium = Lev (nové patronymium, 1);
EndIf;

// nastavení prvních písmen na velká písmena
novéPříjmení = ВReg (Leo (novéPříjmení, 1)) + Průměr (novéPříjmení, 2);
newName = VReg (Leo (novéJméno, 1)) + Middle (novéJméno, 2);
nové patronymus = VReg (Leo (nové patronymium, 1)) + střední (nové patronymium, 2);

// a teď je vše pohromadě
If Initials Only Then // pokud je zadán formát iniciál
nové celé jméno = nové příjmení + "" + nové jméno + oddělovač + nové příjmení + oddělovač;
v opačném případě
nové celé jméno = nové příjmení + "" + nové jméno + "" + nové druhé jméno;
EndIf;

If Find (celé jméno, ".") Then // V případě, že vstupní parametr je Příjmení s iniciálami. Nedotýkejte se iniciál
novFIO = novéPříjmení + "" + Treg (Jméno) + Treg (Patronym);
EndIf;

Návrat SokrLP (novFIO);
EndFunction

Zde můžete získat odpovědi na své otázky týkající se aplikace Microsoft Excel 57638 471543
44519 357828
Nejpopulárnější témata z hlavního fóra 14 80
Pokud jste šťastný majitel Macu 😉 217 1059

21. září 2018 06:21:34

Sekce pro umístění zaplaceno otázky, projekty a úkoly a hledat pro ně účinkující. 2100 13379
Pokud jste si stáhli nebo zakoupili doplněk PLEX pro Microsoft Excel a máte nějaké dotazy nebo přání, klikněte sem. 310 1587
808 11620
Diskuse o funkčnosti, pravidlech atd. 269 3464

Online (hostů: 590, uživatelů: 12, z toho skrytých: 3),

Dnes má narozeniny (37), (32), (28), (37), (36), (52)

Celkový počet registrovaných uživatelů: 83105

Zúčastnil se diskuse: 31843

Celkem témat: 105875

skloňování podle pádů v excelu

V kapitole Jiné jazyky a technologie na otázku, zda je možné automaticky skloňovat podstatná jména ve formátu Excel, udávaná autorem Zufar nejlepší odpověď je Dobrý den.
Pokud mluvíme o celém jménu, pracovních názvech nebo divizích, pak můžete. Pravda, je to nástroj spíše pro vývojáře. Uživatel to však může také zjistit. Příklady mají hotová makra pro Excel.
Hodně štěstí!
PS Vyhledejte v Google klíč "Skloňování příjmení, jmen a patronymií podle velikosti písmen"

22 odpovědí

Ahoj! Zde je výběr témat s odpověďmi na vaši otázku: je možné automaticky skloňovat podstatná jména ve formátu Excel

Odpověď od Spláchnout
Ne, tato funkce není v Excelu podporována. Ale pro zvláštní případ můžete použít funkci KDYŽ pro výběr jednoho nebo druhého.

Odpověď od Proscenium
Nacházíte se v kategorii „Programování“, takže vám nikdo nemůže bránit v napsání vlastní funkce ve VBA, která tento bohulibý byznys udělá. A právě řešení problému v tomto formátu je docela reálné.

Odpověď od křtít
Slyšel jsem, že reforma ruského jazyka prošla, ale ani jsem si nedokázal představit, že byla zavedena „podstatná jména ve formátu Excel“))))))

Vlastní funkce pro MS Excel

Skloňování celého jména podle velkých a malých písmen

Funkce umožňuje zobrazit příjmení, křestní jméno a patronymie uvedené v nominativním případě ve formě libovolného jiného pádu.

Oblast použití:

Funkce je vhodná pro automatizaci tvorby dokumentů v MS Excel (nebo pro usnadnění jejich ručního vytváření), kde musí být uveden celý název, nikoli v nominativním případě: různé druhy smluv, hotovostní příkazy, účtenky, odsouhlasovací úkony, objednávky, protokoly, plné moci atd.

Funkce je také nepostradatelná, pokud automatizační nástroje implementují tvorbu výše uvedených dokumentů v aplikaci MS Word na základě dat obsažených v tabulkách MS Excel.

Příklady použití:

  • ve smlouvě: „v zastoupení ved Baranov Petr Vjačeslavovič«
  • v hotovostních příkazech: „vydáno Hnaťuk Pavel Vasilievič"," Přijato z Irina Sergejevna Gritsenko«
  • v plné moci: „Věřím vedení vozidla Smirnitskij Vitalij Valerijevič«
  • v pořadí: „jmenovat Stepašová Olga Nikolajevna«
  • v zápisu: „posudek se zpracovává Dvoržeckij Nikita Ivanovič«

Co je implementováno:

  • příjmení se všemi koncovkami „-ov“, „-ev“, „-in“, „-yan (c)“, „-sky (-tsky)“, „-skoy (-tskoy)“ jsou odmítnuta správně “, " -Th "," -ich "," -ih "," -ets "," -nko "," -uk "," -yuk "," -ich "," -ya "a další: Pavlov, Zinoviev , Gagarin, Petrosjan, Vysockij, Trubetskoy, Tsoi, Zadorozhny, Sadovnichy, Sedykh, Dolgikh, Soskovets, Nesterenko, Goncharuk, Danilyuk, Rabinovič, Danelia, Kvasha, Vrubel, Kozak, Kazachok atd., jakož i odpovídající ženské příjmení
  • zohledňují se rozdíly ve skloňování mužských a ženských příjmení: Tkach Viktor a Tkach Svetlana, Kozovec Anton a Kozovec Ekaterina
  • složená příjmení jsou zpracována správně: například Mamin-Sibiryak, Saltykov-Shchedrin, Nemirovič-Danchenko, Lebedev-Kumach
  • cizojazyčná příjmení nejsou nakloněna: Galois, Morua, Defoe, Dali, Meringue, Verdi, Garcia, Hemingway atd.
  • patronymika s částicemi "-oglu", "-kyzy", "ibn" jsou úspěšně zpracována: Mamedov Polad Murtuza oglu -> Mamedov Polad Murtuza oglu, Ghassan Abdurahman ibn Khattab -> Gassan Abdurahman ibn Khattab, Abu Ali ibn Ali ibn -> Abu Ali ibn Ali ibn Sinoy
  • pohlaví (muž / žena) je automaticky určeno patronymem a na základě toho jsou vybrána vhodná pravidla skloňování
  • pro situace, kdy je obtížné automaticky určit pohlaví (prostřední jméno je cizí nebo chybí), můžete pohlaví zadat jako parametr funkce
  • možný závěr ve zkrácené formě "příjmení + iniciály": Polozov N. A., Vasilyeva A. K., Dvorzhetskiy E. Ye.
  • schopnost používat obojí ve formě nástavby(lze použít ve všech souborech na tomto pracovišti), a ve formuláři kód vložený do souboru(funkce bude v tomto souboru fungovat na jakémkoli pracovišti - je vhodné, když je soubor např. zaslán protistraně)
  • otevřený zdrojový kód - pokud si přejete, můžete si algoritmus prostudovat nebo upravit

Jak se připojit?

Program je jeden soubor s názvem bdgFIOPropisyu.bas... Aby bylo možné ji použít v konkrétním souboru, musí být funkce importována do tohoto souboru. To vyžaduje:

  1. otevřete soubor MS Excel, kde chcete funkci použít
  2. vstupte do editoru VBA stisknutím klávesové zkratky "Alt + F11" nebo prostřednictvím nabídky:
  3. v hlavní nabídce editoru VBA vyberte položku "Soubor" -> "Importovat soubor ...":
  4. v zobrazeném okně pro výběr souboru vyberte soubor bdgFIOPropisyu.bas a klikněte na tlačítko "Otevřít":

To je vše, programový kód se naimportuje a můžete jej použít.

Jak používat?

Zde je několik dalších příkladů jeho použití:

Situace, kdy funkce může být nesprávný:

Navzdory skutečnosti, že existuje mnoho situací, kdy může být fungování funkce neuspokojivé, je jich níže uvedeno poměrně málo, pravděpodobnost kolize s takovým celým jménem v praktické práci je poměrně malá, protože v 99,9 % případů jsou příjmení nalezená na území Ruska nakloněna podle obecných pravidel.
Kromě toho je třeba poznamenat, že jiné algoritmy a programy také nemohou zaručit správnost výsledku ve 100% případů - ruský jazyk je příliš velký a výkonný na to, aby byl popsán sadou logických pravidel (viz níže o vlivu postavení přízvuku ve slově, původ příjmení, o závislosti psaní ženského tvaru příjmení na pravopisu mužského rodu atd.).

  • Podle pravidel ruského jazyka se skloňuje mužský a ženský cizí jazyk příjmení končící na „-a“ a „-ya“ závisí na místě přízvuku ve slově a na původu příjmení.
    Všechna příjmení končící na nepřízvučný"-A" po souhláskách, klesá: Seneca -> Seneca -> Petrarch -> Petrarch, Zakysaná smetana -> Zakysaná smetana, Kurosava -> Kurosawa, Glinka -> Glinka, Okudžava -> Okudžava atd. Skloňování příjmení s poklep"-a" na konci závisí na jeho původu: příjmení francouzského původu se neskloňují: Dumá, Dega, Fermá, Petipa atd., příjmení jiného původu (ze slovanských a východních jazyků) se odmítají: Mitta -> Mitty, Kvasha -> Kvashi, Pánev -> Pánve, Kocherga -> Kochergi, Hamza -> Hamzy atd.
    Stejně tak příjmení francouzského původu se zdůrazněným „-i“ na konci jsou nezničitelná: Zola, Troyet. Všechna ostatní příjmení na "-ya" jsou odmítnuta: Golovnya -> Golovni, Danelia -> Danilia, Beria -> Beria, Goya -> Goya.
    Protože není možné programově určit polohu přízvuku a původ příjmení, předpokládá se v algoritmu programu, že všechna taková příjmení jsou skloňována podle obecných pravidel. Francouzská příjmení s důrazem na koncovku proto program zpracovává chybně: Dumas -> Dumas, Zola -> Zoli, Petipa -> Petipa.
  • Mužská příjmení končící na "-y", "-y", "-y" se odmítají jako přídavná jména Gorky -> Gorky, Blissful -> Blissful, Bronevoy -> Armor. Výjimkou jsou případy, kdy příjmení s takovou koncovkou je obecné podstatné jméno (slavík, Vodopoy, Genius, Scenario) nebo je cizího původu (Tsoi, Tskhoi, Choi). Protože není možné programově určit, zda je příjmení takovou výjimkou, je konvenčně přijímáno, že všechna příjmení s koncovkami „-th“, „-th“, „-y“ se jako přídavná jména odmítají. V drtivé většině případů to platí, nicméně ve výjimečných případech u příjmení-podstatných jmen bude výsledek funkce chybný: Kozodoy Jakov -> Kozodoj Jakov, Genius Stefan -> Genego Stefan.
    Algoritmus však výjimečně zohlednil skloňování příjmení s těmito koncovkami a kratšími než 5 písmen (většinou korejského původu): Viktor Tsoi -> Viktor Tsoi.
  • V některých případech je správné skloňování ženského příjmení končícího na „-ina“, „-ova“ možné pouze v případě, že je známé skloňování odpovídajícího mužského příjmení: Pearl Lyudmila, Malina Svetlana lze odmítnout jako v obvyklém tvaru: Pearl Lyudmila -> Pearl Lyudmila, Malina Svetlana -> Malina Svetlana (pokud jsou odpovídající mužská příjmení například Zhemchuzhin Boris a Malin Oleg), a ve formě podstatného jména: Pearl Lyudmila -> Pearls Lyudmila, Malina Svetlana -> Malina Svetlana (pokud jsou mužské formy příjmení, například Pearl Boris a Malina Oleg).
    V algoritmu není možné zohlednit takové nuance, proto jsou všechna příjmení žen zpracována funkcí podle stejných pravidel (jako přídavná jména), což v některých případech může vést k nesprávným výsledkům.
  • Obdobná situace je u mužských a ženských příjmení končících na "-ov (a)", "-ev (a)", "-in (a)", která jsou homonymní s obecným podstatným jménem: Borov, Lev, Sova, Barin , Korová, Sova, Obraz, Peřina, Dědek atd.). Neexistuje způsob, jak programově určit identitu příjmení a podstatného jména žádnými formálními znaky, proto skloňování takových příjmení podle stejných obecných pravidel vede k nesprávným výsledkům ve tvaru: Lev Pavel -> Levym Pavel, Filin Sergei -> Filin Sergei, Korova Ksenia -> Korovoy Ksenia, Sova Olga -> Olgina sova, Alla's Painting -> Alla's Painting.
  • Mužská příjmení končící na měkké znaménko jsou nakloněná: Michail Vrubel -> Michail Vrubel, Nikolaj Gogol -> Nikolaj Gogol atd. Při skloňování však koncovky takových příjmení závisí na tom, o jaký druh podstatných jmen - mužského, ženského nebo středního rodu - jde.
    Algoritmicky není možné určit rod podstatného jména, proto v případech, kdy je mužské příjmení podstatné jméno ženského nebo středního rodu, funkce nebude fungovat správně: Steel Ivan -> Steel Ivan, Wormwood Victor -> Wormwood Victor.
  • Tvoření instrumentálního případu příjmení končících na „-zha“, „-ca“, „-cha“, „-sha“, „-sha“ závisí na přízvuku ve slově: pokud je tato koncovka nepřízvučná, pak s deklinace se změní na "-Ey": Kapitsa Peter -> Kapitsa Peter, Cloud Fjodor -> Cloud Fjodor; pokud je koncovka s diakritikou, je nahrazena "-oi": Kvasha Igor -> Kvashoy Igor, Candle Ivan -> Candle Ivan. Podobně je tomu u příjmení končících na „-ets“: bez přízvuku se koncovka změní na „-em“: Victor Finger -> Victor Finger; ve stresu - na "-tý": Oleg Soskovets -> Oleg Soskovets.
    Jak bylo uvedeno výše, není možné programově určit polohu stresu ve slově, proto se v algoritmu programu předpokládá, že ve slovech končících na „-ja“, „-ca“, „-cha“, „-sha ", "-sha" , koncovka je nepřízvučná (takových slov je více), čili instrumentální pád je vždy tvořen koncovkou "-ey". Naopak ve slovech končících na „ets“ se akceptuje, že koncovka je pod přízvukem, to znamená, že se bude skloňovat s koncovkou „-om“. Podle toho budou v ostatních případech pozorovány chyby formuláře: Kvashey Igor, Candles Ivan, Finger Viktor.
  • Podle pravidel ruského jazyka je první část dvojitého ruského příjmení nakloněna, pokud může být sama použita jako příjmení: dílo Mamin-Sibiryaka, příběh Saltykova-Shchedrina, opera Rimského-Korsakova, atd. Jinak se to nemění: obraz Van Dycka, dobrodružství Dona Juana, panoše Dona Quijota atd. Takže např. první díl je nakloněn k příjmení Semjonov-Tjan-Shanskij, ale ne druhý : díla Semjonova-Tjana-Shanského.
    Opět je algoritmicky nemožné určit, zda je základní část příjmení nezávislá, proto se pracovně předpokládá, že všechny části složeného příjmení by měly být odmítnuty (ve většině případů tomu tak je), což v řadě situací vede k chybám: Vana-Dyck, Don -Quixote, Semjonova-Tyana-Shansky.
  • Cizí příjmení končící na „-ov“ a „-in“ v instrumentálním případě mění koncovku na „-th“: Benjamin Franklin, Charles Darwin, Charlie Chaplin, Alexander Green. „Ruská“ příjmení s podobnými koncovkami končí na „-th“: Ivanov, Gagarin, Fonvizin atd. Navzdory skutečnosti, že výše uvedená příjmení (Franklin, Darwin, Chaplin, Green) jsou v algoritmu zohledněna jako výjimky, je malá šance, že se objeví nějaké další podobné cizí příjmení - v tomto případě výsledek funkce bude nesprávné.

Pravidla skloňování pro příjmení a jména se používají v souladu s oddíly 13.1 a 13.2 práce N.A.Eskové „Potíže se skloňováním podstatných jmen. Učební materiály pro praktickou výuku v kurzu "Jazyk moderního tisku"(Státní tiskový výbor SSSR. Všesvazový institut pro pokročilé školení pracovníků tisku. M., 1990).

Cena: 1500 rublů