Deklinasi nama keluarga menjadi aksess. Bagaimana cara membuat penurunan kasus di excel? Situasi ketika fungsi mungkin tidak bekerja dengan benar

File tersebut berisi prosedur untuk 7.7 dan 8.x. Sebuah string dilewatkan ke prosedur dalam format Nama Depan Nama Depan Patronimik.

UPD 26/11/10: dengan rasa terima kasih - versi baru dari fungsi tersebut. Saya belum menguji! Pertanyaan tentang karya versi ini - kepadanya, untuk beberapa alasan dia tidak ingin menyebarkannya :)

Function CasesFULLNAME (Nilai Nama Lengkap, Kasus = 1, OnlyInitials = False, Nilai nSeparator = ".")
Jika TypeZnch (nama lengkap)<>Ketik ("String") Lalu
Report("String tidak valid diteruskan ke" "nama lengkap case!" ""); Pengembalian nama lengkap;
Berakhir jika;

// hapus banyak spasi
Sedangkan 1 = 1 Siklus
Nama lengkap = Singkatan (StrReplace (nama lengkap, "", ""));
If Find (nama lengkap, "") = 0 Kemudian Abort EndIf;
Akhir Siklus;

Jika TypeZnch (Case) = Type ("String") Maka
pad = SocrLP (NReg (Leo (Kasus, 1)));
Jika Temukan ("irdvtp", pad) = 0 Maka

Berakhir jika;
ElseIf TypeZnch (Case) = Ketik ("Nomor") Kemudian
Jika (Kasus<1) или (Падеж>6) Kemudian
Report ("Kasus salah diteruskan ke" "nama kasus" "!"); Pengembalian nama lengkap;
Berakhir jika;
pad = Kasus-1;
Berakhir jika;

Nama lengkap = Singkatan dari LP (NReg (nama lengkap)); // ini lebih nyaman

// penganalisis komposisi Anda sendiri
Nama belakang = "";
Untuk d = 1 Dengan Str Panjang (nama lengkap) Siklus
simbol = Tengah (nama lengkap, d, 1);

Nama belakang = Nama belakang + karakter;
Akhir Siklus;
s = d + 1; //melintasi ruang
Nama = "";

simbol = Tengah (nama lengkap, d, 1);
If char = "" Kemudian Abort EndIf;
Nama = Nama + karakter;
Akhir Siklus;
s = d + 1; // melewati spasi kedua
Nama tengah = "";
Untuk d = s Dengan Str Panjang (nama lengkap) Siklus
simbol = Tengah (nama lengkap, d, 1);
If char = "" Kemudian Abort EndIf;
Patronim = Patronimik + simbol;
Akhir Siklus;

// sekarang kami memiliki Nama Keluarga, Nama, dan Patronimik yang terpisah.
// memulai blok sebenarnya untuk menganalisis konten dan kasus

// kembali jika dirinya sendiri adalah nominatif. Jika diatur untuk mengembalikan OnlyInitials, maka konversikan ke inisial
Jika (Leo (Kasus, 1) = "Dan") atau (Kasus = 1) Maka
Jika TIDAK Hanya Inisial atau Temukan (nama lengkap, ".") Kemudian
Pengembalian nama lengkap; // string yang sudah dikonversi, atau tidak perlu dikonversi
Berakhir jika;
NAMA LENGKAP Baru = TREG (Nama belakang) + "" + Vreg (Leo (Nama depan, 1)) + pSplitter + Breg (Leo (Patronymic, 1)) + pSeparator;
Kembalikan SokrLP (Nama Lengkap Baru); // jika pemisah adalah spasi. Yang terakhir kita potong
Berakhir jika;

// menganalisis jenis kelamin M / F
If Right (Patronymic, 1) = "a" Kemudian Gender = "F" Sebaliknya Gender = "M" EndIf;

// membuat struktur tabel yang menyimpan akhiran kata
saat ini = Tabel Nilai Baru;
StringType = NewTypeDescription ("String", NewStringQualifiers (3));
NumberType = NewTypeDescription ("Nomor", Kualifikasi Nomor Baru (1,0));
current.Columns.Add ("StarOk", LineType); // akhiran lama 2 karakter
// kolom menyimpan akhiran kata baru
saat ini.Kolom.Tambah ("p"); // genitif
saat ini.Kolonki.Tambah ("d"); // datif
current.Columns.Add ("dalam"); // akusatif
saat ini.Kolom.Tambahkan ("t"); // kreatif
saat ini.Kolonki.Tambahkan ("p"); // preposisional
// untuk menunjukkan berapa banyak huruf dari akhir kata yang harus dipotong,
current.Columns.Add ("NumberSection", NumberType); // jumlah huruf yang dipotong

Vokal = "aeeooiyyayuyu"; // daftar vokal sebagai string

// ======== proses nama belakang ==========
// isi tabel dengan data nama belakang

Jika jenis kelamin = "M" Maka
string = saat ini.Tambah (); // ivanov
baris.StarOk = "* s";

baris.ColvoSlice = 0;

Stroke = saat ini.Tambahkan (); // krasinsky
baris.StarOk = "* th";
baris.r = "wow"; baris.d = "ohmu"; baris.v = "wow"; line.t = "mereka"; baris.p = "ohm";
baris.QuantitySection = 2;

Stroke = saat ini.Tambahkan (); // maha kuasa
line.StarOk = "malu";
line.r = "dia"; stotok.d = "dia"; line.in = "dia"; line.t = "mereka"; line.p = "makan";
baris.QuantitySection = 2;

Stroke = saat ini.Tambahkan (); // Putih
baris.StarOk = "th";
baris.r = "wow"; baris.d = "ohmu"; baris.v = "wow"; baris.t = "ym"; baris.p = "ohm";
baris.QuantitySection = 2;

Stroke = saat ini.Tambahkan (); // pucat
baris.StarOk = "* th";

baris.QuantitySection = 1;

Stroke = saat ini.Tambahkan (); // Rabinovich
baris.StarOk = "* h";

baris.ColvoSlice = 0;

Stroke = saat ini.Tambahkan (); // memperbaiki, siput
baris.StarOk = "* ke";
baris.r = "ka"; baris.d = "ku"; baris.v = "ka"; baris.t = "com"; baris.p = "ke";
baris.QuantitySection = 2;

Stroke = saat ini.Tambahkan (); // shinkar
baris.StarOk = "* b";
strotok.r = "i"; stotok.d = "u"; baris.v = "i"; line.t = "makan"; baris.p = "e";
baris.QuantitySection = 1;

Stroke = saat ini.Tambahkan (); // perelman, oganeyan
baris.StarOk = "* n";

baris.ColvoSlice = 0;

Stroke = saat ini.Tambahkan (); // barankin
baris.StarOk = "dalam";
baris.r = "a"; baris.d = "y"; baris.v = "a"; baris.t = "ym"; baris.p = "e";
baris.ColvoSlice = 0;

LainJika Jenis Kelamin = "F" Maka
string = saat ini.Tambah (); // sklodovskaya
baris.StarOk = "th";
baris.r = "oh"; baris.d = "oh"; baris.v = "yu"; baris.t = "oh"; baris.p = "oh";
baris.QuantitySection = 2;

Stroke = saat ini.Tambahkan (); // ivanova
baris.StarOk = "* a";
baris.r = "oh"; baris.d = "oh"; baris.v = "y"; baris.t = "oh"; baris.p = "oh";
baris.QuantitySection = 1;
Berakhir jika;


Jika Tidak EmptyString (Nama Belakang) Lalu
pb = Kanan (Nama depan, 3); hitung = "StarOk"; // mencari itu
newSurname = Nama Belakang; // jika tidak ada yang berubah, itu akan
str = arus Temukan (pb, hitung);
Jika str<>


Jika tidak
// benar-benar tidak ditemukan oleh tiga karakter terakhir, cari dengan dua karakter hanya dengan yang terakhir
pb = Kanan (Nama depan, 2);
str = arus Temukan (pb, hitung);
Jika str<>Tidak ditentukan Kemudian
Basis = Leo (Nama Keluarga, StrLength (Nama Belakang) -str. ColvoSection);
newSurname = Dasar + SokrLP (stro [pad]);
Kalau tidak // jika kami tidak menemukan dua, cari satu per satu
pb = "*" + Kanan (pb, 1);
str = arus Temukan (pb, hitung);
Jika str<>
Basis = Leo (Nama Keluarga, StrLength (Nama Belakang) -str. ColvoSection);
newSurname = Dasar + SokrLP (stro [pad]);


str = arus Temukan (pb, hitung);
Jika str<>Tidak terdefinisi Kemudian // ditemukan berdasarkan jenis
Basis = Leo (Nama Keluarga, StrLength (Nama Belakang) -str. ColvoSection);
newSurname = Dasar + SokrLP (stro [pad]);
Berakhir jika;
Berakhir jika;
Berakhir jika;
Berakhir jika;
Jika tidak
nama belakang baru = "";
Berakhir jika;

// ======== proses nama ==========
// isi tabel dengan data nama
saat ini.Hapus ();

Jika Jenis Kelamin = "M" Maka
// menangani pengecualian
If Name = "singa" Kemudian Name = "singa" EndIf;
If Name = "paul" Kemudian Name = "paul" EndIf;

Stroke = saat ini.Tambahkan (); // Sergei
baris.lama = "* th";
strotok.r = "i"; stotok.d = "u"; baris.v = "i"; line.t = "makan"; baris.p = "e";
garis.warna = 1;

Stroke = saat ini.Tambahkan (); // ivan + singa + pavel
baris.lama = "* s";
baris.r = "a"; baris.d = "y"; baris.v = "a"; strotok.t = "ohm"; baris.p = "e";
baris.colvoice = 0;

Stroke = saat ini.Tambahkan (); // nikita
baris.lama = "* a";

garis.warna = 1;

Stroke = saat ini.Tambahkan (); // busur
baris.lama = "ka";

garis.warna = 1;

Stroke = saat ini.Tambahkan (); // Yeremia
baris.lama = "ia";

garis.warna = 1;

Stroke = saat ini.Tambahkan (); // ilya
baris.lama = "* i";

garis.warna = 1;

Stroke = saat ini.Tambahkan (); // Igor
baris.lama = "* b";
strotok.r = "i"; stotok.d = "u"; baris.v = "i"; line.t = "makan"; baris.p = "e";
garis.warna = 1;

LainJika Jenis Kelamin = "F" Maka
// menangani pengecualian
// Jika Nama = "Olga" Kemudian Nama = "Olga" EndIf;

Stroke = saat ini.Tambahkan (); // Irina
baris.lama = "* a";
baris.r = "s"; baris.d = "e"; baris.v = "y"; baris.t = "oh"; baris.p = "e";
garis.warna = 1;

Stroke = saat ini.Tambahkan (); // inga, olga
baris.lama = "ha";
baris.r = "dan"; baris.d = "e"; baris.v = "y"; baris.t = "oh"; baris.p = "e";
garis.warna = 1;

Stroke = saat ini.Tambahkan (); // Ester
baris.lama = "* b";
baris.r = "dan"; baris.d = "dan"; baris.v = "b"; baris.t = "baru"; baris.p = "dan";
garis.warna = 1;

Stroke = saat ini.Tambahkan (); // maria
baris.lama = "ia";
baris.r = "dan"; baris.d = "dan"; baris.v = "u"; strotok.t = "dia"; baris.p = "dan";
garis.warna = 1;

Stroke = saat ini.Tambahkan (); // sofia
baris.lama = "* i";
baris.r = "dan"; baris.d = "e"; baris.v = "u"; strotok.t = "dia"; baris.p = "e";
garis.warna = 1;
Berakhir jika;

// tabel sudah penuh. hitung 2 huruf terakhir dan cari
Jika Tidak EmptyString (Nama) Kemudian
pb = Kanan (Nama, 2); hitung = "StarOk"; // mencari itu
newName = Nama; // jika tidak ada yang berubah, itu akan
str = arus Temukan (pb, hitung);
Jika str<>Tidak terdefinisi Kemudian // segera ditemukan ketat


Jika tidak // benar-benar tidak ditemukan, kami hanya mencari yang terakhir
pb = "*" + Kanan (pb, 1);
str = arus Temukan (pb, hitung);
Jika str<>Tidak terdefinisi Kemudian // ditemukan oleh yang terakhir
Basis = Leo (Nama, StrLength (Nama) -string.ColvoSection);
newName = Basis + SokrLP (stro [pad]);
Kalau tidak // kami tidak menemukan yang terakhir, kami mencari surat-suratnya
pb = "*" +? (Cari (Vokal, Kanan (pb, 1)) = 0, "s", "g");
str = arus Temukan (pb, hitung);
Jika str<>Tidak terdefinisi = 1 Kemudian // ditemukan berdasarkan tipe
Basis = Leo (Nama, StrLength (Nama) -string.ColvoSection);
newName = Basis + SokrLP (stro [pad]);
Berakhir jika;
Berakhir jika;
Berakhir jika;
Jika tidak
namabaru = "";
Berakhir jika;

// ======== proses nama tengah, lebih mudah disini ==========
saat ini.Hapus ();

Jika Jenis Kelamin = "M" Maka
string = saat ini.Tambah ();
baris.r = "a"; baris.d = "y"; baris.v = "a"; line.t = "makan"; baris.p = "e";
baris.colvoice = 0;
LainJika Jenis Kelamin = "F" Maka
string = saat ini.Tambah ();
baris.r = "s"; baris.d = "e"; baris.v = "y"; baris.t = "oh"; baris.p = "e";
garis.warna = 1;
Berakhir jika;
Jika Tidak String Kosong (Patronymic) Kemudian
Dasar = Leo (Patronimik, Panjang Str (Patronimik) -tok.KolvoSrez);
patronimik baru = Basis + SokrLP ([pad] saat ini);
Jika tidak
patronimik baru = "";
Berakhir jika;

Jika Hanya Inisial Maka
newName = Leo (newName, 1); patronimik baru = Leo (patronimik baru, 1);
Berakhir jika;

// atur huruf pertama menjadi huruf besar
newSurname = Reg (Leo (newSurname, 1)) + Average (newSurname, 2);
newName = VReg (Leo (newName, 1)) + Middle (newName, 2);
patronimik baru = VReg (Leo (patronimik baru, 1)) + Tengah (patronimik baru, 2);

// dan sekarang semuanya bersama
Jika Inisial Saja Kemudian // jika format inisial ditentukan
nama lengkap baru = nama belakang baru + "" + nama baru + pemisah + patronimik baru + pemisah;
Jika tidak
nama lengkap baru = nama belakang baru + "" + nama baru + "" + nama tengah baru;
Berakhir jika;

If Temukan (nama lengkap, ".") Kemudian // Jika parameter input adalah Nama Keluarga dengan inisial. Jangan sentuh inisialnya
novFIO = newNama belakang + "" + Treg (Nama) + Treg (Patronimik);
Berakhir jika;

Kembalikan SokrLP (novFIO);
Fungsi Akhir

Di sini Anda bisa mendapatkan jawaban atas pertanyaan Anda tentang Microsoft Excel 57638 471543
44519 357828
Topik unggulan teratas dari forum utama 14 80
Jika Anda adalah pemilik Mac yang beruntung 217 1059

21 Sep 2018 06:21:34

Bagian untuk penempatan dibayar pertanyaan, proyek, dan tugas, serta mencari pelakunya. 2100 13379
Jika Anda telah mengunduh atau membeli add-in PLEX untuk Microsoft Excel dan Anda memiliki pertanyaan atau keinginan, klik di sini. 310 1587
808 11620
Diskusi fungsionalitas, aturan, dll. 269 3464

Online (tamu: 590, pengguna: 12, di antaranya tersembunyi: 3),

Hari ini adalah hari ulang tahun (37), (32), (28), (37), (36), (52)

Total pengguna terdaftar: 83105

Berpartisipasi dalam diskusi: 31843

Total topik: 105875

penurunan berdasarkan kasus di excel

Dalam bab Bahasa dan teknologi lainnya untuk pertanyaan apakah mungkin untuk secara otomatis mengubah kata benda dalam format Excel, yang diberikan oleh penulis Zufar jawaban terbaik adalah Selamat siang.
Jika kita berbicara tentang nama lengkap, jabatan atau divisi, maka Anda bisa. Benar, ini adalah alat untuk pengembang. Namun, pengguna juga bisa mengetahuinya. Contoh memiliki makro siap pakai untuk Excel.
Semoga berhasil!
PS Cari di Google untuk kunci "Deklinasi nama keluarga, nama, dan patronimik berdasarkan kasus"

22 jawaban

Hai! Berikut adalah pilihan topik dengan jawaban atas pertanyaan Anda: apakah mungkin untuk secara otomatis mengubah kata benda dalam format Excel

Jawaban dari Menyiram
Tidak, fitur ini tidak didukung di Excel. Tetapi untuk kasus khusus, Anda dapat menggunakan fungsi IF untuk memilih satu atau yang lain.

Jawaban dari Prosenium
Anda berada dalam kategori "Pemrograman", jadi tidak ada yang dapat mencegah Anda menulis fungsi Anda sendiri di VBA, yang akan melakukan bisnis yang saleh ini. Dan hanya memecahkan masalah dalam format ini cukup realistis.

Jawaban dari membaptis
Saya mendengar bahwa reformasi bahasa Rusia telah berlalu, tetapi saya bahkan tidak dapat membayangkan bahwa "kata benda dalam format Excel" diperkenalkan)))))))

Fungsi khusus untuk MS Excel

Deklinasi nama lengkap berdasarkan kasus

Fungsi ini memungkinkan Anda untuk menampilkan nama belakang, nama depan dan patronimik yang diberikan dalam kasus nominatif, dalam bentuk kasus lainnya.

Area aplikasi:

Fungsi ini nyaman digunakan untuk mengotomatiskan pembentukan dokumen di MS Excel (atau untuk memfasilitasi pembuatan manualnya), di mana nama lengkap harus ditunjukkan bukan dalam kasus nominatif: berbagai jenis kontrak, pesanan tunai, kwitansi, tindakan rekonsiliasi, perintah, protokol, surat kuasa, dll.

Fungsi tersebut juga sangat diperlukan jika alat otomatisasi mengimplementasikan pembentukan dokumen-dokumen di atas dalam aplikasi MS Word berdasarkan data yang terdapat dalam tabel MS Excel.

Contoh penggunaan:

  • dalam kontrak: "diwakili oleh kepala Baranov Petr Vyacheslavovich«
  • dalam pesanan tunai: "dikeluarkan Hnatyuk Pavel Vasilievich"," Diterima dari Irina Sergeevna Gritsenko«
  • dalam surat kuasa: “Saya mempercayai manajemen kendaraan Smirnitsky Vitaly Valerievich«
  • dalam urutan: "untuk menunjuk Stepashova Olga Nikolaevna«
  • dalam menit: "laporan disiapkan Dvorzhetsky Nikita Ivanovich«

Apa yang diterapkan:

  • nama keluarga dengan semua akhiran "-ov", "-ev", "-in", "-yan (c)", "-sky (-tsky)", "-skoy (-tskoy)" ditolak dengan benar ", " -Th "," -ich "," -ih "," -ets "," -nko "," -uk "," -yuk "," -ich "," -ya "dan lainnya: Pavlov, Zinoviev , Gagarin, Petrosyan, Vysotsky, Trubetskoy, Tsoi, Zadorozhny, Sadovnichy, Sedykh, Dolgikh, Soskovets, Nesterenko, Goncharuk, Danilyuk, Rabinovich, Danelia, Kvasha, Vrubel, Kozak, Kazachok, dll., serta nama keluarga wanita yang sesuai
  • perbedaan dalam kemunduran nama keluarga pria dan wanita diperhitungkan: Tkach Viktor dan Tkach Svetlana, Kozovets Anton dan Kozovets Ekaterina
  • nama keluarga majemuk diproses dengan benar: misalnya, Mamin-Sibiryak, Saltykov-Shchedrin, Nemirovich-Danchenko, Lebedev-Kumach
  • nama keluarga bahasa asing tidak cenderung: Galois, Morua, Defoe, Dali, Meringue, Verdi, Garcia, Hemingway, dll.
  • patronimik dengan partikel "-oglu", "-kyzy", "ibn" berhasil diproses: Mamedov Polad Murtuza oglu -> Mamedov Polad Murtuza oglu, Ghassan Abdurahman ibn Khattab -> Gassan Abdurahman ibn Khattab, Abu Ali ibn Ali ibn -> Abu Ali bin Ali bin Sinoy
  • jenis kelamin (laki-laki / perempuan) secara otomatis ditentukan oleh patronimik dan, berdasarkan ini, aturan kemunduran yang sesuai dipilih
  • untuk situasi ketika sulit untuk secara otomatis menentukan jenis kelamin (nama tengah asing atau tidak ada), Anda dapat menentukan jenis kelamin sebagai parameter fungsi
  • kemungkinan kesimpulan dalam bentuk singkatan "nama keluarga + inisial": Polozov N. A., Vasilyeva A. K., Dvorzhetskiy E. Ye.
  • kemampuan untuk menggunakan keduanya dalam bentuk bangunan atas(dapat digunakan di semua file di tempat kerja ini), dan dalam bentuk kode yang disematkan dalam file(fungsi ini akan berfungsi dalam file ini di tempat kerja mana pun - akan lebih mudah jika file tersebut, misalnya, dikirim ke rekanan)
  • kode sumber terbuka - jika mau, Anda dapat mempelajari algoritme atau memodifikasi

Bagaimana cara menghubungkan?

Program ini adalah satu file bernama bdgFIOPropisyu.bas... Untuk menggunakannya dalam file tertentu, fungsi tersebut harus diimpor ke file ini. Ini membutuhkan:

  1. buka file MS Excel tempat Anda ingin menggunakan fungsinya
  2. masuk ke editor VBA dengan menekan tombol pintas "Alt + F11" atau melalui menu:
  3. di menu utama editor VBA, pilih item "File" -> "Impor file ...":
  4. di jendela pemilihan file yang muncul, pilih file bdgFIOPropisyu.bas dan klik tombol "Buka":

Itu saja, kode program diimpor dan Anda dapat menggunakannya.

Cara Penggunaan?

Berikut adalah beberapa contoh lagi penggunaannya:

Situasi di mana fungsinya dapat salah:

Terlepas dari kenyataan bahwa ada banyak situasi ketika pengoperasian fungsi mungkin tidak memuaskan, ada beberapa yang tercantum di bawah ini, kemungkinan tabrakan dengan nama lengkap seperti itu dalam pekerjaan praktis agak kecil, karena dalam 99,9% kasus, nama keluarga yang ditemukan di wilayah Rusia cenderung sesuai dengan aturan umum.
Selain itu, perlu dicatat bahwa algoritma dan program lain juga tidak dapat menjamin kebenaran hasil dalam 100% kasus - bahasa Rusia terlalu besar dan kuat untuk dijelaskan oleh seperangkat aturan logis (lihat di bawah tentang pengaruh posisi stres dalam sebuah kata, asal usul nama keluarga, tentang ketergantungan penulisan bentuk feminin nama keluarga dari ejaan bentuk maskulin, dll.).

  • Menurut aturan bahasa Rusia, kemunduran pria dan wanita bahasa asing nama keluarga yang diakhiri dengan "-a" dan "-ya" tergantung pada tempat tekanan dalam kata dan asal usul nama keluarga.
    Semua nama keluarga berakhiran tanpa tekanan"-A" setelah konsonan, menurun: Seneca -> Seneca -> Petrarch -> Petrarch, Sour cream -> Sour cream, Kurosava -> Kurosawa, Glinka -> Glinka, Okudzhava -> Okudzhava, dll. Deklinasi nama keluarga dengan ketuk"-a" pada akhirnya tergantung pada asalnya: nama keluarga asal Prancis tidak cenderung: Dumá, Dega, Fermá, Petipa, dll., nama keluarga dari asal yang berbeda (dari bahasa Slavia dan Timur) ditolak: Mitta -> Mitty, Kvasha -> Kvashi, Wajan -> Wajan penggorengan, Kocherga -> Kochergi, Hamza -> Hamzy, dll.
    Demikian juga, nama keluarga asal Prancis dengan "-i" yang ditekankan di akhir tidak bisa dihancurkan: Zola, Troyet. Semua nama keluarga lain di "-ya" ditolak: Golovnya -> Golovni, Danelia -> Danilia, Beria -> Beria, Goya -> Goya.
    Karena tidak mungkin untuk secara terprogram menentukan posisi tekanan dan asal nama keluarga, diasumsikan dalam algoritma program bahwa semua nama keluarga tersebut ditolak menurut aturan umum. Oleh karena itu, nama keluarga Prancis dengan penekanan pada akhir diproses secara tidak benar oleh program: Dumas -> Dumas, Zola -> Zoli, Petipa -> Petipa.
  • Nama keluarga laki-laki yang diakhiri dengan "-y", "-y", "-y" ditolak sebagai kata sifat Gorky -> Gorky, Blissful -> Blissful, Bronevoy -> Armor. Pengecualian adalah kasus ketika nama keluarga dengan akhiran seperti itu adalah kata benda umum (Nightingale, Vodopoy, Genius, Skenario) atau berasal dari luar negeri (Tsoi, Tskhoi, Choi). Karena tidak mungkin untuk menentukan secara terprogram apakah nama keluarga adalah pengecualian seperti itu, secara konvensional diterima bahwa semua nama keluarga dengan akhiran "-th", "-th", "-y" ditolak sebagai kata sifat. Dalam sebagian besar kasus, ini benar, namun, dalam kasus luar biasa dengan nama keluarga-kata benda, hasil fungsinya akan salah: Kozodoy Yakov -> Kozodoy Yakov, Genius Stefan -> Genego Stefan.
    Namun, sebagai pengecualian, algoritme memperhitungkan penurunan nama keluarga dengan akhiran ini dan panjangnya kurang dari 5 huruf (kebanyakan berasal dari Korea): Viktor Tsoi -> Viktor Tsoi.
  • Dalam beberapa kasus, penurunan yang benar dari nama keluarga wanita yang diakhiri dengan "-ina", "-ova" hanya mungkin jika penurunan nama keluarga pria yang sesuai diketahui: Pearl Lyudmila, Malina Svetlana dapat ditolak seperti dalam bentuk biasa: Pearl Lyudmila -> Pearl Lyudmila, Malina Svetlana -> Malina Svetlana (jika nama keluarga pria yang sesuai adalah, misalnya, Zhemchuzhin Boris dan Malin Oleg), dan dalam bentuk kata benda: Pearl Lyudmila -> Pearls Lyudmila, Malina Svetlana -> Malina Svetlana (jika bentuk laki-laki dari nama keluarga, misalnya, Pearl Boris dan Malina Oleg).
    Tidak mungkin untuk memperhitungkan nuansa seperti itu dalam algoritme, oleh karena itu, semua nama keluarga wanita diproses oleh fungsi sesuai dengan aturan yang sama (sebagai kata sifat), yang dalam beberapa kasus dapat menyebabkan hasil yang salah.
  • Situasi serupa adalah dengan nama keluarga pria dan wanita yang diakhiri dengan "-ov (a)", "-ev (a)", "-in (a)", yang homonim dengan kata benda umum: Borov, Lev, Owl, Barin , Korova, Burung Hantu, Lukisan, Perina, Pak Tua, dll.). Tidak ada cara untuk secara terprogram menetapkan identitas nama keluarga dan kata benda dengan tanda formal apa pun, oleh karena itu, menolak nama keluarga tersebut sesuai dengan aturan umum yang sama mengarah ke hasil formulir yang salah: Lev Pavel -> Levym Pavel, Filin Sergei -> Filin Sergei, Korova Ksenia -> Korovoy Ksenia, Burung Hantu Olga -> Burung Hantu Olga, Lukisan Alla -> Lukisan Alla.
  • Nama keluarga pria yang diakhiri dengan tanda lembut cenderung: Mikhail Vrubel -> Mikhail Vrubel, Nikolai Gogol -> Nikolai Gogol, dll. Namun, ketika menurun, akhiran nama keluarga tersebut tergantung pada jenis kata benda - maskulin, feminin atau netral - mereka.
    Tidak mungkin menentukan jenis kelamin kata benda secara algoritme, oleh karena itu, dalam kasus di mana nama keluarga laki-laki adalah kata benda feminin atau netral, fungsinya tidak akan berfungsi dengan benar: Steel Ivan -> Steel Ivan, Wormwood Victor -> Wormwood Victor.
  • Pembentukan kasus instrumental dari nama keluarga yang diakhiri dengan "-zha", "-ca", "-cha", "-sha", "-sha" tergantung pada tekanan dalam kata: jika akhiran ini tanpa tekanan, maka dengan deklinasi berubah menjadi "-Ey": Kapitsa Peter -> Kapitsa Peter, Cloud Fyodor -> Cloud Fyodor; jika akhirannya beraksen, diganti dengan "-oi": Kvasha Igor -> Kvashoy Igor, Candle Ivan -> Candle Ivan. Situasinya mirip dengan nama keluarga yang berakhiran "-ets": tanpa stres, akhirannya berubah menjadi "-em": Jari Victor -> Jari Victor; di bawah tekanan - pada "-th": Oleg Soskovets -> Oleg Soskovets.
    Seperti disebutkan di atas, tidak mungkin untuk secara terprogram menentukan posisi stres dalam sebuah kata, oleh karena itu, dalam algoritma program diasumsikan bahwa dalam kata-kata yang diakhiri dengan "-ja", "-ca", "-cha", "-sha ”, “-sha” , akhirannya tidak ditekan (ada lebih banyak kata seperti itu), yaitu, kasus instrumental selalu dibentuk oleh akhiran "-ey". Sebaliknya, dalam kata-kata yang diakhiri dengan "ets", diterima bahwa akhirannya berada di bawah tekanan, yaitu, kemunduran akan berakhiran "-om". Dengan demikian, dalam kasus lain, kesalahan formulir akan diamati: Kvashey Igor, Candles Ivan, Finger Viktor.
  • Menurut aturan bahasa Rusia, bagian pertama dari nama keluarga ganda Rusia cenderung jika itu sendiri dapat digunakan sebagai nama keluarga: karya Mamin-Sibiryak, kisah Saltykov-Shchedrin, opera Rimsky-Korsakov, dll. Kalau tidak, itu tidak berubah: lukisan Van Dyck, petualangan Don Juan, pengawal Don Quixote, dll. Jadi, misalnya, bagian pertama cenderung dengan nama keluarga Semyonov-Tyan-Shansky, tetapi bukan yang kedua : karya Semyonov-Tyan-Shansky.
    Sekali lagi, secara algoritmik tidak mungkin untuk menentukan apakah bagian konstituen dari nama keluarga independen, oleh karena itu diasumsikan untuk pekerjaan bahwa semua bagian dari nama keluarga majemuk harus ditolak (dalam banyak kasus demikian), yang dalam beberapa situasi mengarah kesalahan: Vana-Dyck, Don -Quixote, Semyonova-Tyana-Shansky.
  • Nama keluarga asing yang diakhiri dengan "-ov" dan "-in" dalam kasus instrumental mengubah akhiran menjadi "-th": Benjamin Franklin, Charles Darwin, Charlie Chaplin, Alexander Green. Nama keluarga "Rusia" dengan akhiran yang serupa diakhiri dengan "-th": Ivanov, Gagarin, Fonvizin, dll. Terlepas dari kenyataan bahwa nama keluarga di atas (Franklin, Darwin, Chaplin, Green) diperhitungkan dalam algoritme sebagai pengecualian, ada kemungkinan kecil bahwa beberapa nama keluarga asing serupa lainnya akan ditemukan - dalam hal ini, hasil dari fungsi akan salah.

Aturan kemunduran untuk nama keluarga dan nama depan digunakan sesuai dengan bagian 13.1 dan 13.2 dari karya N.A.Eskova “Kesulitan infleksi kata benda. Bahan ajar untuk latihan praktek pada mata kuliah “Bahasa Pers Modern”(Komite Pers Negara Uni Soviet. Institut All-Union untuk Pelatihan Lanjutan Pekerja Pers. M., 1990).

Harga: 1500 rubel