A vezetéknevek aksesssá válása. Hogyan készítsünk kis- és nagybetűket excelben? Olyan helyzetek, amikor a funkció nem működik megfelelően

A fájl tartalmazza a 7.7 és 8.x eljárásokat. Az eljáráshoz egy karakterlánc kerül átadásra Vezetéknév Keresztnév Apanév formátumban.

UPD 11/26/10: hálával - a funkció új verziója. nem teszteltem! Kérdések a verzió működésével kapcsolatban - neki, valamiért nem akarja terjeszteni :)

Funkció CasesFULLNAME (Érték teljes név, esetek = 1, OnlyInitials = hamis, érték nSeparator = ".")
Ha TypeZnch (teljes név)<>Ezután írja be ("String").
Jelentés ("Érvénytelen karakterlánc továbbítva" "eset teljes név!" ""); A teljes név visszaadása;
EndIf;

// több szóköz eltávolítása
Míg 1 = 1 Ciklus
Teljes név = Rövidítés (StrReplace (teljes név, "", ""));
Ha Find (teljes név, "") = 0, akkor az EndIf megszakítása;
Ciklus vége;

Ha TypeZnch (Case) = Type ("String") Akkor
pad = SocrLP (NReg (Leo (Case, 1)));
Ha a Find ("irdvtp", pad) = 0 Akkor

EndIf;
ElseIf TypeZnch (Case) = Type ("Szám") Akkor
Ha (eset<1) или (Падеж>6) Akkor
Jelentés ("Helytelen eset továbbítva" "ügynév" "!"); A teljes név visszaadása;
EndIf;
pad = Case-1;
EndIf;

Teljes név = LP (NReg (teljes név)) rövidítése; // így kényelmesebb

// saját összetételelemző
Vezetéknév = "";
For d = 1 Str Length (teljes név) Ciklus
szimbólumok = Középső (teljes név, d, 1);

Vezetéknév = Vezetéknév + karakterek;
Ciklus vége;
s=d+1; // átlépte a teret
Név = "";

szimbólumok = Középső (teljes név, d, 1);
If char = "" Akkor az EndIf megszakítása;
Név = Név + karakterek;
Ciklus vége;
s=d+1; // átlépte a második szóközt
Középső név = "";
For d = s Str Length szerint (teljes név) Ciklus
szimbólumok = Középső (teljes név, d, 1);
If char = "" Akkor az EndIf megszakítása;
Patronim = Patronim + szimbólumok;
Ciklus vége;

// Most külön vezetéknév, név és patronymic van.
// megkezdi a tényleges blokkot a tartalom és az esetek elemzéséhez

// visszatér, ha maga névleges. Ha az OnlyInitials visszaadásra van beállítva, akkor alakítsa át kezdőbetűvé
Ha (Oroszlán (1. eset) = "És") vagy (Eset = 1) Akkor
Ha NEM Csak Initials vagy Find (teljes név, ".") Akkor
A teljes név visszaadása; // vagy egy már konvertált karakterlánc, vagy nem kell konvertálni
EndIf;
Új TELJES NÉV = TREG (Vezetéknév) + "" + Vreg (Oroszlán (Keresztnév, 1)) + pSplitter + Breg (Oroszlán (apanév, 1)) + pElválasztó;
Return SokrLP (új teljes név); // abban az esetben, ha az elválasztó szóköz. Az utolsó, amit vágtunk
EndIf;

// nem elemzése M / F
Ha jobb (Patronym, 1) = "a" Akkor Nem = "F" Ellenkező esetben Nem = "M" EndIf;

// szóvégződéseket tároló táblázatszerkezet létrehozása
aktuális = Új értéktábla;
StringType = NewTypeDescription ("String", NewStringQualifers (3));
NumberType = NewTypeDescription ("Szám", NewNumber minősítők (1,0));
aktuális.Oszlopok.Hozzáadás ("StarOk", Vonaltípus); // régi befejezés 2 karakter
// új szóvégződéseket tároló oszlopok
aktuális.Oszlopok.Hozzáadás ("p"); // genitivus
jelenlegi.Kolonki.Hozzáadás ("d"); // datuvus
aktuális.Oszlopok.Hozzáadás ("in"); // accusative
aktuális.Oszlopok.Hozzáadás ("t"); // kreatív
jelenlegi.Kolonki.Hozzáadás ("p"); // elöljárószó
// annak jelzésére, hogy a szó végétől hány betűt kell levágni,
aktuális.Oszlopok.Hozzáadás ("Számszakasz", NumberType); // vágott betűk száma

Magánhangzók = "aeeooiyyayuyu"; // magánhangzók listája karakterláncként

// ======== feldolgozza a vezetéknevet ==========
// töltse ki a táblázatot a vezetéknévre vonatkozó adatokkal

Ha nem = "M" Akkor
string = aktuális.Hozzáadás (); // ivanov
line.StarOk = "* s";

sor.ColvoSlice = 0;

Löket = áram. Add (); // krasinsky
line.StarOk = "* th";
line.r = "wow"; line.d = "ohmu"; line.v = "wow"; line.t = "ők"; line.p = "ohm";
sor.QuantitySection = 2;

Löket = áram. Add (); // mindenható
line.StarOk = "félénk";
line.r = "ő"; stotok.d = "ő"; line.in = "ő"; line.t = "ők"; line.p = "enni";
sor.QuantitySection = 2;

Löket = áram. Add (); // Fehér
line.StarOk = "th";
line.r = "wow"; line.d = "ohmu"; line.v = "wow"; line.t = "ym"; line.p = "ohm";
sor.QuantitySection = 2;

Löket = áram. Add (); // sápadt
line.StarOk = "* th";

sor.QuantitySection = 1;

Löket = áram. Add (); // Rabinovics
line.StarOk = "* h";

sor.ColvoSlice = 0;

Löket = áram. Add (); // javít, slug
line.StarOk = "* to";
line.r = "ka"; line.d = "ku"; line.v = "ka"; line.t = "com"; line.p = "ke";
sor.QuantitySection = 2;

Löket = áram. Add (); // shinkar
line.StarOk = "* b";
strotok.r = "i"; stotok.d = "u"; line.v = "i"; line.t = "enni"; line.p = "e";
sor.QuantitySection = 1;

Löket = áram. Add (); // perelman, oganesyan
line.StarOk = "* n";

sor.ColvoSlice = 0;

Löket = áram. Add (); // barankin
line.StarOk = "in";
line.r = "a"; line.d = "y"; line.v = "a"; line.t = "ym"; line.p = "e";
sor.ColvoSlice = 0;

ElseIf Gender = "F" Akkor
string = aktuális.Hozzáadás (); // sklodovskaya
line.StarOk = "th";
line.r = "ó"; line.d = "ó"; line.v = "yu"; line.t = "ó"; line.p = "ó";
sor.QuantitySection = 2;

Löket = áram. Add (); // ivanova
line.StarOk = "* a";
line.r = "ó"; line.d = "ó"; line.v = "y"; line.t = "ó"; line.p = "ó";
sor.QuantitySection = 1;
EndIf;


Ha nem EmptyString (Vezetéknév) Akkor
pb = jobb (Vezetéknév, 3); count = "StarOk"; // keress rá
newSurname = Vezetéknév; // ha semmi nem változik, akkor fog
str = áram Keresse (pb, count);
Ha str<>


Másképp
// szigorúan az utolsó három karakter nem találja, csak az utolsó karakter alapján keressen
pb = jobb (Vezetéknév, 2);
str = áram Keresse (pb, count);
Ha str<>Undefined Akkor
Base = Oroszlán (Vezetéknév, StrLength (Vezetéknév) -str. ColvoSection);
newSurname = Basis + SokrLP (stro [pad]);
Ellenkező esetben // ha nem találtunk kettőt, akkor egyenként keressünk
pb = "*" + Jobb (pb, 1);
str = áram Keresse (pb, count);
Ha str<>
Base = Oroszlán (Vezetéknév, StrLength (Vezetéknév) -str. ColvoSection);
newSurname = Basis + SokrLP (stro [pad]);


str = áram Keresse (pb, count);
Ha str<>Undefined Majd // típus szerint található
Base = Oroszlán (Vezetéknév, StrLength (Vezetéknév) -str. ColvoSection);
newSurname = Basis + SokrLP (stro [pad]);
EndIf;
EndIf;
EndIf;
EndIf;
Másképp
újVezetéknév = "";
EndIf;

// ======== feldolgozza a nevet ==========
// töltse ki a táblázatot a névhez tartozó adatokkal
jelenlegi.Tiszta ();

Ha Nem = "M" Akkor
// kivételek kezelése
Ha Név = "oroszlán" Akkor Név = "oroszlán" EndIf;
Ha Név = "paul" Akkor Név = "paul" EndIf;

Löket = áram. Add (); // Szergej
line.old = "* th";
strotok.r = "i"; stotok.d = "u"; line.v = "i"; line.t = "enni"; line.p = "e";
line.colouction = 1;

Löket = áram. Add (); // ivan + oroszlán + pavel
line.old = "* s";
line.r = "a"; line.d = "y"; line.v = "a"; strotok.t = "ohm"; line.p = "e";
line.colvoice = 0;

Löket = áram. Add (); // nikita
line.old = "* a";

line.colouction = 1;

Löket = áram. Add (); // íj
line.old = "ka";

line.colouction = 1;

Löket = áram. Add (); // Jeremiás
line.old = "ia";

line.colouction = 1;

Löket = áram. Add (); // ilya
line.old = "* i";

line.colouction = 1;

Löket = áram. Add (); // Igor
line.old = "* b";
strotok.r = "i"; stotok.d = "u"; line.v = "i"; line.t = "enni"; line.p = "e";
line.colouction = 1;

ElseIf Gender = "F" Akkor
// kivételek kezelése
// Ha Név = "Olga" Akkor Név = "Olga" EndIf;

Löket = áram. Add (); // Irina
line.old = "* a";
line.r = "s"; line.d = "e"; line.v = "y"; line.t = "ó"; line.p = "e";
line.colouction = 1;

Löket = áram. Add (); // inga, olga
line.old = "ha";
line.r = "és"; line.d = "e"; line.v = "y"; line.t = "ó"; line.p = "e";
line.colouction = 1;

Löket = áram. Add (); // Eszter
line.old = "* b";
line.r = "és"; line.d = "és"; line.v = "b"; line.t = "új"; line.p = "és";
line.colouction = 1;

Löket = áram. Add (); // maria
line.old = "ia";
line.r = "és"; line.d = "és"; line.v = "u"; strotok.t = "ő"; line.p = "és";
line.colouction = 1;

Löket = áram. Add (); // Sofia
line.old = "* i";
line.r = "és"; line.d = "e"; line.v = "u"; strotok.t = "ő"; line.p = "e";
line.colouction = 1;
EndIf;

// megtelt az asztal. számolja meg az utolsó 2 betűt, és keresse meg őket
Ha nem EmptyString (Név) Akkor
pb = jobb (Név, 2); count = "StarOk"; // keress rá
newName = Név; // ha semmi nem változik, akkor fog
str = áram Keresse (pb, count);
Ha str<>Undefined Akkor // azonnal szigorúnak talált


Ellenkező esetben // szigorúan nem található, csak az utolsó alapján keresünk
pb = "*" + Jobb (pb, 1);
str = áram Keresse (pb, count);
Ha str<>Undefined Akkor // megtalálta az utolsó
Alap = Oroszlán (Név, StrLength (Név) -string.ColvoSection);
newName = Basis + SokrLP (stro [pad]);
Egyébként // nem találtuk az utolsót, keressük a betűket
pb = "*" +? (Keresés (magánhangzók, jobb oldali (pb, 1)) = 0, "s", "g");
str = áram Keresse (pb, count);
Ha str<>Undefined = 1 Majd // típus szerint található
Alap = Oroszlán (Név, StrLength (Név) -string.ColvoSection);
newName = Basis + SokrLP (stro [pad]);
EndIf;
EndIf;
EndIf;
Másképp
newName = "";
EndIf;

// ======== feldolgozd a középső nevet, itt könnyebb ==========
jelenlegi.Tiszta ();

Ha Nem = "M" Akkor
string = aktuális.Hozzáadás ();
line.r = "a"; line.d = "y"; line.v = "a"; line.t = "enni"; line.p = "e";
line.colvoice = 0;
ElseIf Gender = "F" Akkor
string = aktuális.Hozzáadás ();
line.r = "s"; line.d = "e"; line.v = "y"; line.t = "ó"; line.p = "e";
line.colouction = 1;
EndIf;
Ha nem üres karakterlánc (patronim) Akkor
Basis = Oroszlán (Patronymic, Str Length (Patronymic) -tok.KolvoSrez);
új patronim = Basis + SokrLP (aktuális [pad]);
Másképp
új patronim = "";
EndIf;

Ha csak kezdőbetűk akkor
newName = Oroszlán (újNév, 1); új patronim = Oroszlán (új patronim, 1);
EndIf;

// az első betűket nagybetűre állítani
újVezetéknév = ВReg (Oroszlán (újVezetéknév, 1)) + Átlagos (újVezetéknév, 2);
newName = VReg (Oroszlán (újNév, 1)) + Középső (újNév, 2);
új apanév = VReg (Leo (új patronim, 1)) + Közép (új patronim, 2);

// és most minden együtt van
If OnlyInitials Akkor // ha a kezdőbetűk formátuma meg van adva
új teljes név = új vezetéknév + "" + új név + elválasztó + új családnév + elválasztó;
Másképp
új teljes név = új vezetéknév + "" + új név + "" + új középső név;
EndIf;

Ha Find (teljes név, ".") Akkor // Abban az esetben, ha a bemeneti paraméter Vezetéknév kezdőbetűkkel. Ne érintse meg a kezdőbetűket
novFIO = új Vezetéknév + "" + Treg (név) + Treg (apanév);
EndIf;

Return SokrLP (novFIO);
EndFunction

Itt választ kaphat a Microsoft Excellel kapcsolatos kérdéseire 57638 471543
44519 357828
A fő fórum legnépszerűbb témái 14 80
Ha szerencsés Mac tulajdonos vagy 😉 217 1059

2018. szeptember 21. 06:21:34

Elhelyezésre szolgáló szakasz fizetett kérdéseket, projekteket és feladatokat, és keressen ezekre fellépőket. 2100 13379
Ha letöltötte vagy megvásárolta a PLEX bővítményt a Microsoft Excelhez, és bármilyen kérdése vagy kívánsága van, kattintson ide. 310 1587
808 11620
Beszélgetés a funkcionalitásról, szabályokról stb. 269 3464

Online (vendégek: 590, felhasználók: 12, ebből rejtett: 3),

Ma van (37), (32), (28), (37), (36), (52) születésnapja

Összes regisztrált felhasználó: 83105

A beszélgetésben részt vett: 31843

Összes téma: 105875

esetenkénti elhajlás excelben

fejezetben Más nyelvek és technológiák a szerző által adott kérdésre, hogy lehetséges-e a főnevek automatikus ragozása Excel formátumban Zufar a legjobb válasz az Jó nap.
Ha teljes névről, beosztásról vagy beosztásról beszélünk, akkor megteheti. Igaz, ez egy fejlesztői eszköz. A felhasználó azonban ezt is kitalálhatja. A példákban kész makrók találhatók az Excelhez.
Sok szerencsét!
PS Keressen a Google-ban a "Vezetéknevek, nevek és családnevek esetenkénti elvetése" kulcsra.

22 válasz

Hé! Íme néhány téma a válaszokkal a kérdésedre: lehetséges-e a főnevek automatikus ragozása Excel formátumban

Válasz tőle Öblítés
Nem, ezt a funkciót az Excel nem támogatja. De speciális esetben az IF funkcióval kiválaszthatja az egyiket vagy a másikat.

Válasz tőle Előszín
Ön a "Programozás" kategóriába tartozik, így senki sem akadályozhatja meg, hogy saját függvényt írjon a VBA-ba, amely ezt az istenfélő dolgot fogja elvégezni. És a probléma megoldása ebben a formátumban meglehetősen reális.

Válasz tőle megkeresztel
Hallottam, hogy az orosz nyelv reformja elmúlt, de el sem tudtam képzelni, hogy bevezették az „Excel formátumú főneveket”))))))

Egyedi funkció MS Excelhez

A teljes név elvetése kis- és nagybetűk szerint

A funkció lehetővé teszi a névelőben megadott vezetéknév, keresztnév és apanév megjelenítését bármilyen más kisbetűs alakban.

Alkalmazási terület:

A funkció kényelmesen használható dokumentumok MS Excelben történő létrehozásának automatizálására (vagy kézi létrehozásuk megkönnyítésére), ahol a teljes nevet kell feltüntetni, nem névelőben: különféle szerződések, készpénzes utalványok, nyugták, egyeztetési aktusok, végzések, jegyzőkönyvek, meghatalmazások stb.

A funkció akkor is nélkülözhetetlen, ha az automatizálási eszközök a fenti dokumentumok kialakítását az MS Word alkalmazásban valósítják meg az MS Excel táblákban található adatok alapján.

Példák a felhasználásra:

  • a szerződésben: „a fej képviseli Baranov Petr Vjacseszlavovics«
  • készpénzes utalványokon: „kiadva Hnatyuk Pavel Vasziljevics"," Feladó Irina Szergejevna Gricenko«
  • a meghatalmazásban: „Bízom a jármű vezetésében Szmirnickij Vitalij Valerijevics«
  • sorrendben: „kijelölni Stepashova Olga Nikolaevna«
  • a jegyzőkönyvben: „a jelentés elkészült Dvorzsetszkij Nyikita Ivanovics«

Ami megvalósul:

  • az összes „-ov”, „-ev”, „-in”, „-yan (c)”, „-sky (-tsky)”, „-skoy (-tskoy)” végződésű vezetéknevek helyesen vannak elutasítva. " -Th "," -ich "," -ih "," -ets "," -nko "," -uk "," -yuk "," -ich "," -ya "és mások: Pavlov, Zinoviev , Gagarin, Petrosjan, Viszockij, Trubetszkoj, Coj, Zadorozsnij, Szadovnicsi, Szedykh, Dolgik, Szoszkovec, Neszterenko, Goncsaruk, Daniljuk, Rabinovics, Danelia, Kvasa, Vrubel, Kozák, Kazachok stb., valamint a megfelelő női vezetéknevek
  • figyelembe veszik a férfi és a női vezetéknevek elhatározásának különbségeit: Tkach Viktor és Tkach Svetlana, Kozovets Anton és Kozovets Ekaterina
  • az összetett vezetékneveket helyesen dolgozzák fel: például Mamin-Sibiryak, Saltykov-Shchedrin, Nyemirovich-Danchenko, Lebedev-Kumach
  • az idegen nyelvű vezetéknevek nem hajlanak: Galois, Morua, Defoe, Dali, Meringue, Verdi, Garcia, Hemingway stb.
  • a "-oglu", "-kyzy", "ibn" részecskéket tartalmazó családnevek feldolgozása sikeresen megtörtént: Mamedov Polad Murtuza oglu -> Mamedov Polad Murtuza oglu, Ghassan Abdurahman ibn Khattab -> Gassan Abdurahman ibn Khattab, Abu Ali ibn - Alibuib Ali ibn Ali ibn Sinoy
  • a nemet (férfi / nő) automatikusan meghatározza a patroním, és ez alapján választják ki a megfelelő eltolási szabályokat
  • olyan helyzetekben, amikor nehéz a nemet automatikusan meghatározni (a középső név idegen vagy hiányzik), megadhatja a nemet a függvény paramétereként
  • lehetséges következtetés rövidített formában "vezetéknév + kezdőbetűk": Polozov N. A., Vasilyeva A. K., Dvorzhetskiy E. Ye.
  • mindkettő használatának képessége a formában felépítmények(minden fájlban használható ezen a munkahelyen), és az űrlapon fájlba ágyazott kód(a funkció ebben a fájlban bármely munkahelyen működik - kényelmes, ha például a fájlt elküldik egy partnernek)
  • nyílt forráskód - ha szeretné, tanulmányozhatja az algoritmust, vagy módosíthatja

Hogyan kell csatlakozni?

A program egyetlen nevű fájl bdgFIOPropisyu.bas... Egy adott fájlban való használatához a függvényt importálni kell ebbe a fájlba. Ehhez szükséges:

  1. nyissa meg azt az MS Excel fájlt, ahol használni szeretné a függvényt
  2. lépjen be a VBA-szerkesztőbe az "Alt + F11" gyorsbillentyű megnyomásával vagy a menün keresztül:
  3. a VBA szerkesztő főmenüjében válassza a "Fájl" -> "Fájl importálása ..." elemet:
  4. a megjelenő fájlkiválasztó ablakban válassza ki a fájlt bdgFIOPropisyu.basés kattintson a "Megnyitás" gombra:

Ennyi, a programkód importálva van, és már használhatod is.

Hogyan kell használni?

Íme néhány további példa a használatára:

Olyan helyzetek, ahol a funkció lehet helytelen:

Annak ellenére, hogy nagyon sok olyan helyzet van, amikor a funkció működése nem kielégítő, az alábbiakban jó néhányat felsorolunk, a gyakorlati munkában meglehetősen kicsi az ütközés valószínűsége egy ilyen teljes névvel, mivel az esetek 99,9% -ában az Oroszország területén talált vezetéknevek az általános szabályok szerint hajlanak.
Ezenkívül meg kell jegyezni, hogy más algoritmusok és programok sem tudják garantálni az esetek 100% -ában az eredmény helyességét - az orosz nyelv túl nagy és erős ahhoz, hogy logikai szabályokkal leírható legyen (lásd alább a a hangsúly helyzete egy szóban, a vezetéknév eredete, a vezetéknév női alakjának írásbeli függése a hímnemű alak írásmódjától stb.).

  • Az orosz nyelv szabályai szerint a férfi és a nő elhajlása idegen nyelv az "-a" és "-ya" végződésű vezetéknevek a szóban lévő hangsúly helyétől és a vezetéknév eredetétől függenek.
    Az összes vezetéknév végződése hangsúlytalan"-A" a mássalhangzók után, csökken: Seneca -> Seneca -> Petrarch -> Petrarch, Tejföl -> Tejföl, Kurosava -> Kurosawa, Glinka -> Glinka, Okudzhava -> Okudzhava stb. ütőhangszerek A végén található „-a” az eredetétől függ: a francia eredetű vezetéknevek nem hajlanak: Dumá, Dega, Fermá, Petipa stb., az eltérő eredetű vezetékneveket (szláv és keleti nyelvből) elutasítjuk: Mitta -> Mitty, Kvasha -> Kvashi, Serpenyő -> Serpenyők, Kocherga -> Kochergi, Hamza -> Hamzy stb.
    Ugyanígy elpusztíthatatlanok azok a francia eredetű vezetéknevek is, amelyek végén hangsúlyos "-i" van: Zola, Troyet. A "-ya" összes többi vezetékneve elutasítva: Golovnya -> Golovni, Danelia -> Danilia, Beria -> Beria, Goya -> Goya.
    Mivel nem lehet programozottan meghatározni a hangsúly helyét és a vezetéknév eredetét, a programalgoritmus feltételezi, hogy az összes ilyen vezetéknevet az általános szabályok szerint elutasítják. Ezért a végződést hangsúlyozó francia vezetékneveket hibásan dolgozza fel a program: Dumas -> Dumas, Zola -> Zoli, Petipa -> Petipa.
  • A "th", "th", "th" végződésű férfi vezetéknevek Gorkij -> Gorkij, Blissful -> Blissful, Bronevoy -> Armor melléknevek szerepelnek. Kivételt képeznek azok az esetek, amikor egy ilyen végződésű vezetéknév köznév (Nightingale, Vodopoy, Genius, Scenario) vagy idegen eredetű (Tsoi, Tskhoi, Choi). Mivel nem lehet programozottan meghatározni, hogy egy vezetéknév ilyen kivétel-e, hagyományosan elfogadott, hogy minden "-th", "-th", "-y" végződésű vezetéknév melléknévként elutasításra kerül. Az esetek túlnyomó többségében ez igaz, azonban kivételes esetekben főnevek esetén a függvény eredménye hibás lesz: Nightingale Jacob -> Nighty Jacob, Genius Stefan -> Genego Stefan.
    Kivételként azonban az algoritmus figyelembe vette az ilyen végződésű és 5 betűnél rövidebb (többnyire koreai eredetű) vezetéknevek deklinációját: Viktor Tsoi -> Viktor Tsoi.
  • Egyes esetekben az "-ina", "-ova" végződésű női vezetéknév helyes levezetése csak akkor lehetséges, ha a megfelelő férfi vezetéknév elhatározása ismert: Pearl Lyudmila, Malina Svetlana a szokásos formában elutasítható: Pearl Lyudmila -> Pearl Lyudmila, Malina Svetlana -> Malina Svetlana (ha a megfelelő férfi vezetéknevek például Zhemchuzhin Boris és Malin Oleg), és főnév formájában: Pearl Lyudmila -> Pearls Lyudmila, Malina Svetlana -> Malina Svetlana (ha a vezetéknév férfi formái, például Pearl Boris és Malina Oleg).
    Lehetetlen figyelembe venni az ilyen árnyalatokat az algoritmusban, ezért a függvény minden női vezetéknevét ugyanazon szabályok szerint dolgozza fel (melléknevekként), ami bizonyos esetekben helytelen eredményhez vezethet.
  • Hasonló a helyzet az "-ov (a)", "-ev (a)", "-in (a)" végződésű férfi és női vezetéknevekkel, amelyek homonim egy köznévvel: Borov, Lev, Owl, Barin , Korova, Bagoly, Festmény, Perina, Öreg stb.). A vezetéknév és a főnév azonosságát semmilyen formai jellel nem lehet programozottan megállapítani, ezért az ilyen vezetéknevek ugyanazon általános szabályok szerinti elutasítása helytelen alakzati eredményekhez vezet: Lev Pavel -> Levym Pavel, Filin Sergei -> Filin Szergej, Korova Ksenia -> Korovoj Ksenia, Bagoly Olga -> Olga bagolya, Alla festménye -> Alla festménye.
  • A lágy jelre végződő férfi vezetéknevek hajlamosak: Mikhail Vrubel -> Mikhail Vrubel, Nikolai Gogol -> Nikolai Gogol stb. Ha azonban csökken, az ilyen vezetéknevek végződése attól függ, hogy milyen főnevekről van szó - hímnemű, nőnemű vagy semleges.
    Algoritmikusan nem lehet meghatározni a főnév nemét, ezért azokban az esetekben, amikor a férfi vezetéknév női vagy semleges főnév, a funkció nem működik megfelelően: Steel Ivan -> Steel Ivan, Wormwood Victor -> Wormwood Victor.
  • A "-zha", "-ca", "-cha", "-sha", "-sha" végződésű vezetéknevek instrumentális esetének kialakulása a szó hangsúlyától függ: ha ez a végződés hangsúlytalan, akkor deklináció "-Ey"-re változik: Kapitsa Péter -> Kapitsa Péter, Felhő Fjodor -> Felhő Fjodor; ha a vége ékezetes, akkor "-oi"-ra cseréljük: Kvasha Igor -> Kvashoy Igor, Candle Ivan -> Candle Ivan. Hasonló a helyzet az "-ets" végződésű vezetéknevekkel is: hangsúly nélkül a végződés "-em"-re változik: Victor Finger -> Victor Finger; stressz alatt - a "-edik"-en: Oleg Soskovets -> Oleg Soskovets.
    Mint fentebb említettük, nem lehet programozottan meghatározni a hangsúly pozícióját egy szóban, ezért a programalgoritmusban azt feltételezzük, hogy a "-ja", "-ca", "-cha", "-sha" végződésű szavakban ", "-sha" , a végződés hangsúlytalan (több ilyen szó van), vagyis a hangszeres esetet mindig az "-ey" végződés alkotja. Ellenkezőleg, az "ets" végű szavakban elfogadott, hogy a végződés hangsúlyos, vagyis a deklináció az "-om" végződéssel történik. Ennek megfelelően más esetekben az űrlap hibái figyelhetők meg: Kvashey Igor, Candles Ivan, Finger Viktor.
  • Az orosz nyelv szabályai szerint a kettős orosz vezetéknév első része hajlamos, ha maga is használható vezetéknévként: Mamin-Szibirjak műve, Saltykov-Scsedrin története, Rimszkij-Korszakov operája, stb. Különben nem változik: Van Dyck festménye, Don Juan kalandjai, Don Quijote lovagja stb. Így például az első rész a Szemjonov-Tjan-Sanszkij vezetéknévre hajlik, a második viszont nem. : Szemjonov-Tjan-Sanszkij művei.
    Ismételten algoritmikusan lehetetlen meghatározni, hogy a vezetéknév alkotó része független-e, ezért a munka során feltételezzük, hogy az összetett vezetéknév minden részét el kell utasítani (a legtöbb esetben ez így van), ami számos helyzetben ahhoz vezet, hogy hibákhoz: Vana-Dyck, Don -Quixote, Szemjonova-Tyana-Shansky.
  • Az "-ov" és "-in" végződésű idegen vezetéknevek hangszeres kisbetűiben a végződést "-th"-re változtatják: Benjamin Franklin, Charles Darwin, Charlie Chaplin, Alexander Green. A hasonló végződésű "orosz" vezetéknevek "-th"-re végződnek: Ivanov, Gagarin, Fonvizin stb. Annak ellenére, hogy a fenti vezetékneveket (Franklin, Darwin, Chaplin, Green) kivételként figyelembe veszik az algoritmusban, kicsi az esélye annak, hogy más, hasonló idegen vezetéknévvel találkozunk - ebben az esetben a függvény eredménye. helytelen lesz.

A vezeték- és utónevekre vonatkozó ragozási szabályokat N.A.Eskova munkájának 13.1. és 13.2. szakaszával összhangban használjuk. „A főnevek ragozási nehézségei. Oktatási anyagok a gyakorlati képzéshez a "Modern sajtó nyelve" tanfolyamon(A Szovjetunió Állami Sajtóbizottsága. All-Union Institute for Advanced Training of Press Workers. M., 1990).

Ár: 1500 rubel