Deklinacija prezimena u aksess. Kako napraviti deklinaciju velikih i malih slova u excelu? Situacije kada funkcija možda neće raditi ispravno

Datoteka sadrži procedure za 7.7 i 8.x. Niz se prosljeđuje proceduri u formatu Prezime Ime Patronim.

UPD 11/26/10: sa zahvalnošću - nova verzija funkcije. Nisam testirao! Pitanja o radu ove verzije - njemu, iz nekog razloga ne želi da je širi :)

Funkcija CasesFULLNAME (Vrijednost Puno ime, Cases = 1, OnlyInitials = False, Vrijednost nSeparator = ".")
Ako TypeZnch (puno ime)<>Zatim otkucajte ("String").
Izvještaj ("Nevažeći niz je proslijeđen" "puno ime slučaja!" ""); Povrat punog imena;
EndIf;

// ukloni više razmaka
Dok je 1 = 1 ciklus
Puni naziv = Skraćenica (StrReplace (pun naziv, "", ""));
Ako je Find (puno ime, "") = 0 Onda Prekini EndIf;
Kraj ciklusa;

Ako je TypeZnch (Case) = Tip ("String") Onda
pad = SocrLP (NReg (Lav (Slučaj, 1)));
Ako je Find ("irdvtp", pad) = 0 Onda

EndIf;
ElseIf TypeZnch (Case) = Tip ("Broj") Zatim
Ako (slučaj<1) или (Падеж>6) Onda
Izvještaj ("Netačan slučaj proslijeđen" "naziv slučaja" "!"); Povrat punog imena;
EndIf;
pad = Slučaj-1;
EndIf;

Puni naziv = Skraćenica za LP (NReg (pun naziv)); // ovo je udobnije

// vaš vlastiti analizator kompozicije
Prezime = "";
Za d = 1 Po dužini Str (puno ime) Ciklus
simboli = srednji (pun naziv, d, 1);

Prezime = Prezime + znakovi;
Kraj ciklusa;
s = d + 1; // prešao prostor
Ime = "";

simboli = srednji (pun naziv, d, 1);
Ako je char = "" Onda Prekini EndIf;
Ime = Ime + znakovi;
Kraj ciklusa;
s = d + 1; // prešao je drugi razmak
Srednje ime = "";
Za d = s Po dužini Str (puno ime) Ciklus
simboli = srednji (pun naziv, d, 1);
Ako je char = "" Onda Prekini EndIf;
Patronim = Patronim + simboli;
Kraj ciklusa;

// sada imamo odvojeno prezime, ime i patronim.
// započinje stvarni blok za analizu sadržaja i slučajeva

// vrati ako je samo nominativan. Ako je postavljeno na vraćanje OnlyInitials, onda pretvorite u inicijale
Ako (Lav (Slučaj, 1) = "I") ili (Slučaj = 1) Onda
Ako NE Samo inicijali ili Nađi (puno ime, ".") Onda
Povrat punog imena; // ili već konvertovani niz, ili nema potrebe za konvertovanjem
EndIf;
Novo PUNO IME = TREG (Prezime) + "" + Vreg (Leo (Ime, 1)) + pSeparator + Vreg (Lav (Patronim, 1)) + pSeparator;
Povratak SokrLP (Novi puni naziv); // u slučaju da je separator razmak. Posljednju koju smo izrezali
EndIf;

// analizirati rod M / F
Ako je u pravu (patronim, 1) = "a" Tada je rod = "F" Inače Rod = "M" EndIf;

// kreiramo strukturu tablice koja pohranjuje završetke riječi
trenutni = Nova tabela vrijednosti;
StringType = NewTypeDescription ("String", NewStringQualifiers (3));
NumberType = NewTypeDescription ("Broj", kvalifikatori novog broja (1,0));
current.Columns.Add ("StarOk", LineType); // stari završetak 2 znaka
// kolone koje pohranjuju nove završetke riječi
current.Columns.Add ("p"); // genitiv
current.Kolonki.Add ("d"); // dativ
current.Columns.Add ("in"); // akuzativ
current.Columns.Add ("t"); // kreativno
current.Kolonki.Add ("p"); // prepositional
// da označi koliko slova s ​​kraja riječi treba odsjeći,
current.Columns.Add ("NumberSection", NumberType); // broj izrezanih slova

Samoglasnici = "aeeooiyyayuyu"; // lista samoglasnika kao niz

// ======== obradi prezime ==========
// popuniti tabelu podacima za prezime

Ako je rod = "M" Onda
string = trenutni.Dodaj (); // ivanov
line.StarOk = "* s";

line.ColvoSlice = 0;

Hod = struja Dodaj (); // krasinsky
line.StarOk = "* th";
line.r = "vau"; line.d = "ohmu"; line.v = "vau"; line.t = "oni"; line.p = "ohm";
line.QuantitySection = 2;

Hod = struja Dodaj (); // svemogući
line.StarOk = "stidljiv";
line.r = "on"; stotok.d = "on"; line.in = "on"; line.t = "oni"; line.p = "jesti";
line.QuantitySection = 2;

Hod = struja Dodaj (); // White
line.StarOk = "th";
line.r = "vau"; line.d = "ohmu"; line.v = "vau"; line.t = "ym"; line.p = "ohm";
line.QuantitySection = 2;

Hod = struja Dodaj (); // pale
line.StarOk = "* th";

line.QuantitySection = 1;

Hod = struja Dodaj (); // Rabinovich
line.StarOk = "* h";

line.ColvoSlice = 0;

Hod = struja Dodaj (); // popravke, slug
line.StarOk = "* do";
line.r = "ka"; line.d = "ku"; line.v = "ka"; line.t = "com"; line.p = "ke";
line.QuantitySection = 2;

Hod = struja Dodaj (); // shinkar
line.StarOk = "* b";
strotok.r = "i"; stotok.d = "u"; line.v = "i"; line.t = "jesti"; line.p = "e";
line.QuantitySection = 1;

Hod = struja Dodaj (); // perelman, oganesyan
line.StarOk = "* n";

line.ColvoSlice = 0;

Hod = struja Dodaj (); // barankin
line.StarOk = "u";
line.r = "a"; line.d = "y"; line.v = "a"; line.t = "ym"; line.p = "e";
line.ColvoSlice = 0;

ElseIf Gender = "F" Zatim
string = trenutni.Dodaj (); // sklodovskaya
line.StarOk = "th";
line.r = "oh"; line.d = "oh"; line.v = "yu"; line.t = "oh"; line.p = "oh";
line.QuantitySection = 2;

Hod = struja Dodaj (); // ivanova
line.StarOk = "* a";
line.r = "oh"; line.d = "oh"; line.v = "y"; line.t = "oh"; line.p = "oh";
line.QuantitySection = 1;
EndIf;


Ako nije EmptyString (Prezime) Onda
pb = Desno (Prezime, 3); count = "StarOk"; // potražite ga
novoPrezime = Prezime; // ako se ništa ne promijeni, promijenit će se
str = struja Find (pb, count);
Ako str<>


Inače
// striktno nije pronađeno po posljednja tri znaka, traži po dva znaka samo po posljednjem
pb = Desno (Prezime, 2);
str = struja Find (pb, count);
Ako str<>Nedefinirano Onda
Baza = Lav (Prezime, Dužina (Prezime) -str. ColvoSection);
novoPrezime = Osnova + SokrLP (stro [pad]);
Inače // ako nismo pronašli dva, tražite jednog po jednog
pb = "*" + Desno (pb, 1);
str = struja Find (pb, count);
Ako str<>
Baza = Lav (Prezime, Dužina (Prezime) -str. ColvoSection);
novoPrezime = Osnova + SokrLP (stro [pad]);


str = struja Find (pb, count);
Ako str<>Nedefinirano Zatim // pronađeno po tipu
Baza = Lav (Prezime, Dužina (Prezime) -str. ColvoSection);
novoPrezime = Osnova + SokrLP (stro [pad]);
EndIf;
EndIf;
EndIf;
EndIf;
Inače
novoPrezime = "";
EndIf;

// ======== obraditi ime ==========
// popuniti tabelu podacima za ime
current.Clear ();

Ako je spol = "M" Onda
// obrađuje iznimke
Ako je Ime = "lav" Tada je Ime = "lav" EndIf;
Ako je Ime = "paul" Tada je Ime = "paul" EndIf;

Hod = struja Dodaj (); // Sergej
line.old = "* th";
strotok.r = "i"; stotok.d = "u"; line.v = "i"; line.t = "jesti"; line.p = "e";
line.colouction = 1;

Hod = struja Dodaj (); // ivan + lav + pavel
line.old = "* s";
line.r = "a"; line.d = "y"; line.v = "a"; strotok.t = "ohm"; line.p = "e";
line.colvoice = 0;

Hod = struja Dodaj (); // nikita
line.old = "* a";

line.colouction = 1;

Hod = struja Dodaj (); // luk
line.old = "ka";

line.colouction = 1;

Hod = struja Dodaj (); // Jeremiah
line.old = "ia";

line.colouction = 1;

Hod = struja Dodaj (); // ilya
line.old = "* i";

line.colouction = 1;

Hod = struja Dodaj (); // Igor
line.old = "* b";
strotok.r = "i"; stotok.d = "u"; line.v = "i"; line.t = "jesti"; line.p = "e";
line.colouction = 1;

ElseIf Gender = "F" Zatim
// obrađuje iznimke
// Ako je Ime = "Olga" Tada je Ime = "Olga" EndIf;

Hod = struja Dodaj (); // Irina
line.old = "* a";
line.r = "s"; line.d = "e"; line.v = "y"; line.t = "oh"; line.p = "e";
line.colouction = 1;

Hod = struja Dodaj (); // inga, olga
line.old = "ha";
line.r = "i"; line.d = "e"; line.v = "y"; line.t = "oh"; line.p = "e";
line.colouction = 1;

Hod = struja Dodaj (); // Esther
line.old = "* b";
line.r = "i"; line.d = "i"; line.v = "b"; line.t = "novo"; line.p = "i";
line.colouction = 1;

Hod = struja Dodaj (); // maria
line.old = "ia";
line.r = "i"; line.d = "i"; line.v = "u"; strotok.t = "ona"; line.p = "i";
line.colouction = 1;

Hod = struja Dodaj (); // sofia
line.old = "* i";
line.r = "i"; line.d = "e"; line.v = "u"; strotok.t = "ona"; line.p = "e";
line.colouction = 1;
EndIf;

// stol je pun. prebroj posljednja 2 slova i potraži ih
Ako nije EmptyString (Ime) Onda
pb = Desno (Ime, 2); count = "StarOk"; // potražite ga
newName = Ime; // ako se ništa ne promijeni, promijenit će se
str = struja Find (pb, count);
Ako str<>Nedefinirano Tada // odmah pronađeno strict


Inače // striktno nije pronađeno, tražimo samo po posljednjem
pb = "*" + Desno (pb, 1);
str = struja Find (pb, count);
Ako str<>Nedefinirano Onda // pronađeno od last
Baza = Leo (Ime, StrLength (Naziv) -string.ColvoSection);
newName = Osnova + SokrLP (stro [pad]);
Inače // nismo našli zadnje, tražimo slova
pb = "*" +? (Pronađi (samoglasnici, desno (pb, 1)) = 0, "s", "g");
str = struja Find (pb, count);
Ako str<>Undefined = 1 Zatim // pronađeno po tipu
Baza = Leo (Ime, StrLength (Naziv) -string.ColvoSection);
newName = Osnova + SokrLP (stro [pad]);
EndIf;
EndIf;
EndIf;
Inače
newName = "";
EndIf;

// ======== obradi srednje ime, ovdje je lakše ==========
current.Clear ();

Ako je spol = "M" Onda
string = trenutni.Dodaj ();
line.r = "a"; line.d = "y"; line.v = "a"; line.t = "jesti"; line.p = "e";
line.colvoice = 0;
ElseIf Gender = "F" Zatim
string = trenutni.Dodaj ();
line.r = "s"; line.d = "e"; line.v = "y"; line.t = "oh"; line.p = "e";
line.colouction = 1;
EndIf;
Ako nije prazan niz (patronim) Onda
Osnova = Lav (patronim, Str Dužina (patronim) -tok.KolvoSrez);
novi patronim = Osnova + SokrLP (trenutni [pad]);
Inače
novi patronim = "";
EndIf;

Ako samo inicijali onda
novoIme = Lav (novoIme, 1); novi patronim = Lav (novi patronim, 1);
EndIf;

// postavljamo prva slova na velika
novoPrezime = VReg (Lav (novoPrezime, 1)) + Prosjek (novoPrezime, 2);
novoIme = VReg (Lav (novoIme, 1)) + Srednje (novoIme, 2);
novi patronim = VReg (Lav (novi patronim, 1)) + Srednji (novi patronim, 2);

// i sada je sve zajedno
If Initials Only Onda // ako je naveden format inicijala
novo puno ime = novo prezime + "" + novo ime + separator + novo patronim + separator;
Inače
novo puno ime = novo prezime + "" + novo ime + "" + novo srednje ime;
EndIf;

Ako Pronađi (puno ime, ".") Onda // U slučaju da je ulazni parametar Prezime sa inicijalima. Ne dirajte inicijale
novFIO = novoPrezime + "" + Treg (ime) + Treg (patronim);
EndIf;

Povratak SokrLP (novFIO);
EndFunction

Ovdje možete dobiti odgovore na vaša pitanja o Microsoft Excel-u 57638 471543
44519 357828
Najbolje istaknute teme sa glavnog foruma 14 80
Ako ste sretni vlasnik Maca 😉 217 1059

21 sep 2018 06:21:34

Sekcija za plasman plaćeno pitanja, projekata i zadataka i traženje izvođača za njih. 2100 13379
Ako ste preuzeli ili kupili PLEX dodatak za Microsoft Excel i imate bilo kakva pitanja ili želje, kliknite ovdje. 310 1587
808 11620
Diskusija o funkcionalnosti, pravilima itd. 269 3464

Online (gosti: 590, korisnici: 12, od kojih skriveno: 3),

Danas je rođendan (37), (32), (28), (37), (36), (52)

Ukupno registrovanih korisnika: 83105

U raspravi su učestvovali: 31843

Ukupno tema: 105875

deklinacija po padežima u excelu

U poglavlju Drugi jezici i tehnologije na pitanje da li je moguće automatski skretati imenice u Excel formatu, koje je postavio autor Zufar najbolji odgovor je Dobar dan.
Ako govorimo o punom imenu, nazivima poslova ili podjelama, onda možete. Istina, ovo je prije alat za programere. Međutim, i korisnik to može shvatiti. Primjeri imaju gotove makroe za Excel.
Sretno!
PS Potražite na Google-u ključ "Deklinacija prezimena, imena i patronima po padežima"

22 odgovora

Hej! Evo izbora tema s odgovorima na vaše pitanje: da li je moguće automatski skretati imenice u Excel formatu

Odgovor od Flush
Ne, ova funkcija nije podržana u Excelu. Ali za poseban slučaj, možete koristiti funkciju IF da odaberete jednu ili drugu.

Odgovor od Proscenium
Nalazite se u kategoriji "Programiranje", tako da vas niko ne može spriječiti da sami napišete svoju funkciju u VBA koja će obavljati ovaj božanstveni posao. I samo rješavanje problema u ovom formatu je sasvim realno.

Odgovor od kršten
Čuo sam da je reforma ruskog jezika prošla, ali nisam mogao ni zamisliti da su uvedene "imenice u Excel formatu"))))))

Prilagođena funkcija za MS Excel

Deklinacija punog imena po padežima

Funkcija vam omogućava da prikažete prezime, ime i patronim dato u nominativu, u obliku bilo kojeg drugog padeža.

Područje primjene:

Funkcija je zgodna za korištenje za automatizaciju formiranja dokumenata u MS Excel-u (ili za olakšavanje njihovog ručnog kreiranja), pri čemu se puni naziv mora navesti ne u nominativu: razne vrste ugovora, nalozi za gotovinu, priznanice, akti usaglašavanja, naredbe, protokoli, punomoći itd.

Funkcija je također nezamjenjiva ako alati za automatizaciju implementiraju formiranje gore navedenih dokumenata u MS Word aplikaciji na osnovu podataka sadržanih u MS Excel tabelama.

Primjeri korištenja:

  • u ugovoru: „zastupa rukovodilac Baranov Petr Vjačeslavovič«
  • u gotovinskim nalozima: "izdano Hnatyuk Pavel Vasilijevič"," Primljeno od Irina Sergeevna Gritsenko«
  • u punomoći: „Vjerujem u upravljanje vozilom Smirnitski Vitalij Valerijevič«
  • redom: „imenovati Stepashova Olga Nikolaevna«
  • u zapisniku: „Izvještaj je pripremljen Dvoržetski Nikita Ivanovič«

Šta se implementira:

  • prezimena sa svim završetcima “-ov”, “-ev”, “-in”, “-yan (c)”, “-sky (-tsky)”, “-skoy (-tskoy)” se odbijaju ispravno ", " -Th "," -ich "," -ih "," -ets "," -nko "," -uk "," -yuk "," -ich "," -ya "i drugi: Pavlov, Zinovjev , Gagarin, Petrosyan, Vysotsky, Trubetskoy, Tsoi, Zadorozhny, Sadovnichy, Sedykh, Dolgikh, Soskovets, Nesterenko, Goncharuk, Danilyuk, Rabinovich, Danelia, Kvasha, Vrubel, Kozak, Kazachok, itd., kao i odgovarajuće surnames
  • Uzimaju se u obzir razlike u deklinaciji muških i ženskih prezimena: Tkach Viktor i Tkach Svetlana, Kozovets Anton i Kozovets Ekaterina
  • složena prezimena se pravilno obrađuju: na primjer, Mamin-Sibiryak, Saltykov-Shchedrin, Nemirovich-Danchenko, Lebedev-Kumach
  • Prezimena na stranim jezicima nisu sklona: Galois, Morua, Defoe, Dali, Meringue, Verdi, Garcia, Hemingway, itd.
  • Patronimi sa česticama "-oglu", "-kyzy", "ibn" su uspješno obrađeni: Mamedov Polad Murtuza oglu -> Mamedov Polad Murtuza oglu, Ghassan Abdurahman ibn Khattab -> Gassan Abdurahman ibn Khattab, Abu Ali ibn Aliu ibn Ali ibn Ali ibn Sinoy
  • rod (muški/ženski) se automatski određuje patronimom i na osnovu toga se biraju odgovarajuća pravila deklinacije
  • za situacije kada je teško automatski odrediti spol (srednje ime je strano ili ga nema), možete odrediti spol kao parametar funkcije
  • mogući zaključak u skraćenom obliku "prezime + inicijali": Polozov N. A., Vasilyeva A. K., Dvorzhetskiy E. Ye.
  • mogućnost upotrebe oba u obliku nadgradnje(može se koristiti u svim datotekama na ovom radnom mjestu), iu obrascu kod ugrađen u datoteku(funkcija će raditi u ovoj datoteci na bilo kojem radnom mjestu - zgodno je ako se datoteka, na primjer, pošalje drugoj strani)
  • otvoreni izvorni kod - ako želite, možete proučiti algoritam ili ga modificirati

Kako se povezati?

Program je jedna datoteka pod nazivom bdgFIOPropisyu.bas... Da bi se koristila u određenoj datoteci, funkcija mora biti uvezena u ovu datoteku. Ovo zahtijeva:

  1. otvorite MS Excel datoteku u kojoj želite koristiti funkciju
  2. uđite u VBA editor pritiskom na prečicu tipku "Alt + F11" ili kroz meni:
  3. u glavnom meniju VBA editora izaberite stavku "Datoteka" -> "Uvezi datoteku ...":
  4. u prozoru za odabir datoteke koji se pojavi, odaberite datoteku bdgFIOPropisyu.bas i kliknite na dugme "Otvori":

To je to, programski kod je uvezen i možete ga koristiti.

Kako koristiti?

Evo još nekoliko primjera njegove upotrebe:

Situacije u kojima funkcija može biti netačno:

Unatoč činjenici da postoji mnogo situacija u kojima rad funkcije može biti nezadovoljavajući, ima ih dosta navedenih u nastavku, vjerojatnost kolizije s takvim punim imenom u praktičnom radu je prilično mala, jer u 99,9% slučajeva prezimena pronađena na teritoriji Rusije sklona su prema općim pravilima.
Osim toga, treba napomenuti da drugi algoritmi i programi također ne mogu garantirati tačnost rezultata u 100% slučajeva - ruski jezik je prevelik i moćan da bi se mogao opisati skupom logičkih pravila (vidi dolje o utjecaju položaj naglaska u riječi, porijeklo prezimena, o zavisnosti pisanja ženskog oblika prezimena od pravopisa muškog i sl.).

  • Prema pravilima ruskog jezika, deklinacija muškog i ženskog strani jezik prezimena koja se završavaju na "-a" i "-ya" zavise od mjesta naglaska u riječi i porijekla prezimena.
    Sva prezimena koja se završavaju na nenaglašen"-A" iza suglasnika, padaju: Seneca -> Seneca -> Petrarka -> Petrarka, pavlaka -> pavlaka, Kurosava -> Kurosawa, Glinka -> Glinka, Okudzhava -> Okudžava itd. Deklinacija prezimena sa udaraljke"-a" na kraju zavisi od porijekla: prezimena francuskog porijekla nisu sklona: Dumá, Dega, Fermá, Petipa, itd., prezimena različitog porijekla (iz slovenskih i istočnih jezika) se dekliniraju: Mitta -> Mitty, Kvasha -> Kvashi, Tiganj -> Tiganji, Kocherga -> Kochergi, Hamza -> Hamzy, itd.
    Isto tako, prezimena francuskog porijekla s naglašenim "-i" na kraju su neuništiva: Zola, Troyet. Sva ostala prezimena na "-ya" se odbijaju: Golovnya -> Golovni, Danelia -> Danilia, Beria -> Beria, Goya -> Goya.
    Kako je nemoguće programski odrediti poziciju naglaska i porijeklo prezimena, u programskom algoritmu se pretpostavlja da se sva takva prezimena odbacuju prema općim pravilima. Stoga se francuska prezimena s naglaskom na završetku programom pogrešno obrađuju: Dumas -> Dumas, Zola -> Zoli, Petipa -> Petipa.
  • Muška prezimena koja završavaju na "-y", "-y", "-y" odbacuju se kao pridjevi Gorki -> Gorki, Blaženi -> Blaženi, Bronevoj -> Oklop. Izuzetak su slučajevi kada je prezime s takvim završetkom zajednička imenica (Slavuj, Vodopoy, Genije, Scenario) ili je strano porijeklo (Tsoi, Tskhoi, Choi). Budući da nije moguće programski odrediti da li je prezime takav izuzetak, uobičajeno je prihvaćeno da se sva prezimena sa nastavcima "-th", "-th", "-y" dekliniraju kao pridjevi. U ogromnoj većini slučajeva to je tačno, međutim, u izuzetnim slučajevima sa imenicama, rezultat funkcije će biti pogrešan: Slavuj Jakov -> Noćni Jakov, Genij Stefan -> Genego Stefan.
    Međutim, kao izuzetak, algoritam je uzeo u obzir deklinaciju prezimena sa ovim završecima i dužinom kraćim od 5 slova (uglavnom korejskog porijekla): Viktor Tsoi -> Viktor Tsoi.
  • U nekim slučajevima, ispravna deklinacija ženskog prezimena koje završava na "-ina", "-ova" je moguća samo ako je poznata deklinacija odgovarajućeg muškog prezimena: Pearl Ljudmila, Malina Svetlana može se deklinirati kao u uobičajenom obliku: Biser Ljudmila -> Biser Ljudmila, Malina Svetlana -> Malina Svetlana (ako su odgovarajuća muška prezimena npr. Žemčužin Boris i Malin Oleg), a u obliku imenice: Biser Ljudmila -> Biseri Ljudmila, Malina Svetlana -> Malina Svetlana (ako su muški oblici prezimena, na primjer, Biser Boris i Malina Oleg).
    Nemoguće je uzeti u obzir takve nijanse u algoritmu, stoga se sva ženska prezimena obrađuju od strane funkcije prema istim pravilima (kao pridjevi), što u nekim slučajevima može dovesti do netočnih rezultata.
  • Slična je situacija i sa muškim i ženskim prezimenima koja se završavaju na "-ov (a)", "-ev (a)", "-in (a)", a koja su homonimna sa zajedničkom imenicom: Borov, Lev, Sova, Barin , Korova, Sova, Slikarstvo, Perina, Starac itd.). Ne postoji način da se programski utvrdi identitet prezimena i imenice bilo kojim formalnim znakovima, stoga odbijanje takvih prezimena prema istim općim pravilima dovodi do netočnih rezultata oblika: Lev Pavel -> Levym Pavel, Filin Sergej -> Filin Sergei, Korova Ksenia -> Korovoy Ksenia, Owl Olga -> Olgina sova, Alla's Painting -> Alla's Painting.
  • Muška prezimena koja se završavaju mekim znakom su sklona: Mihail Vrubel -> Mihail Vrubel, Nikolaj Gogol -> Nikolaj Gogolj, itd. Međutim, kada padaju, završeci takvih prezimena ovise o tome koje su to imenice - muškog, ženskog ili srednjeg roda.
    Algoritamski nije moguće odrediti rod imenice, stoga, u slučajevima kada je muško prezime imenica ženskog ili srednjeg roda, funkcija neće raditi ispravno: Čelik Ivan -> Čelik Ivan, Pelin Victor -> Wormwood Victor.
  • Formiranje instrumentalnog padeža prezimena koja se završavaju na "-zha", "-ca", "-cha", "-sha", "-sha" zavisi od naglaska u reči: ako je ovaj završetak nenaglašen, onda sa deklinacija se mijenja u "-Ey": Kapitsa Peter -> Kapitsa Peter, Cloud Fyodor -> Cloud Fyodor; ako je završetak akcentovan, zamjenjuje se sa "-oi": Kvaša Igor -> Kvašoj Igor, Svijeća Ivan -> Svijeća Ivan. Slična je situacija i sa prezimenima koja se završavaju na "-ets": bez naglaska završetak se menja u "-em": Prst Viktor -> Prst Viktor; pod naglaskom - na "-th": Oleg Soskovets -> Oleg Soskovets.
    Kao što je već spomenuto, nemoguće je programski odrediti položaj naglaska u riječi, stoga se u programskom algoritmu pretpostavlja da se u riječima koje završavaju na “-ja”, “-ca”, “-cha”, “-sha” ”, “-sha” , završetak je nenaglašen (ima više takvih riječi), odnosno instrumentalni padež se uvijek formira završetkom “-ey”. Naprotiv, u riječima koje završavaju na "ets" prihvaćeno je da je završetak pod naglaskom, odnosno deklinacija će biti sa završetkom "-om". Shodno tome, u drugim slučajevima će se uočiti greške forme: Kvashey Igor, Candles Ivan, Finger Viktor.
  • Prema pravilima ruskog jezika, prvi dio dvostrukog ruskog prezimena je sklon ako se i sam može koristiti kao prezime: djelo Mamin-Sibiryak, priča o Saltykov-Ščedrinu, opera Rimskog-Korsakova, itd. Inače se ne mijenja: slika Van Dycka, avanture Don Huana, štitonoša Don Kihota itd. Tako je, na primjer, prvi dio sklon prezimenu Semjonov-Tjan-Šanski, ali ne i drugi : djela Semjonova-Tjan-Šanskog.
    Opet, algoritamski je nemoguće utvrditi da li je sastavni dio prezimena samostalan, pa se za rad pretpostavlja da se svi dijelovi složenog prezimena dekliniraju (u većini slučajeva je tako), što u nizu situacija dovodi do do grešaka: Vana-Dyck, Don-Quixote, Semjonova-Tyana-Shansky.
  • Strana prezimena koja se završavaju na "-ov" i "-in" u instrumentalnom padežu mijenjaju završetak u "-th": Benjamin Franklin, Charles Darwin, Charlie Chaplin, Alexander Green. "Ruska" prezimena sa sličnim završetcima završavaju na "-th": Ivanov, Gagarin, Fonvizin, itd. Unatoč činjenici da su navedena prezimena (Franklin, Darwin, Chaplin, Green) u algoritmu uzeta u obzir kao izuzeci, mala je šansa da će se naići na neko drugo slično strano prezime - u ovom slučaju rezultat funkcije će biti netačno.

Pravila deklinacije za prezimena i imena koriste se u skladu sa odjeljcima 13.1 i 13.2 rada N.A.Eskove “Poteškoće u fleksiji imenica. Nastavni materijali za praktičnu nastavu iz predmeta "Jezik savremene štampe"(Državni komitet za štampu SSSR-a. Svesavezni institut za usavršavanje novinarskih radnika. M., 1990).

Cijena: 1500 rubalja