Erişimde soyadlarının azalması. Excel'de büyük harf küçültme nasıl yapılır? İşlevin düzgün çalışmayabileceği durumlar

Dosya 7.7 ve 8.x için yordamlar içerir. Prosedüre Soyadı Adı Patronimik biçiminde bir dize geçirilir.

UPD 11/26/10: minnetle - işlevin yeni bir versiyonu. Test etmedim! Bu versiyonun çalışmasıyla ilgili sorular - ona, nedense onu yaymak istemiyor :)

İşlev CaseName(ValueName,Case=1,InitialsOnly=False, Value pDelimiter=".")
TypeValue(tam ad) ise<>Type("String") Sonra
Show(""Tam ad durumu!"" için geçersiz dize geçirildi"); Tam ad dönüşü;
EndIf;

// çoklu boşlukları kaldır
1=1 Döngü iken
Tam ad = Kısaltılmış LP (StrReplace(Ad, " "," "));
Find(Name," ")=0 ise EndIf'i Durdur;
Bitiş Döngüsü;

TypeValue(Case)=Type("String") ise
ped = AbbrLP(NReg(Lev(Durum,1)));
Find("irdwtp",pad)=0 ise

EndIf;
ElseIf TypeValue(Case)=Type("Sayı") Sonra
Eğer (durum<1) или (Падеж>6) Sonra
Report(""Tam isim vakası""na yanlış vaka iletildi!"); Tam ad dönüşü;
EndIf;
vaka=durum-1;
EndIf;

Tam ad=AblP(НReg(tam ad)); // bu daha rahat

// kendi kompozisyon analizörü
Soyadı="";
d=1 için StrLength(Ad) Döngüsüne Göre
karakter=Ortalama(tam ad, th, 1);

Soyadı=Soyadı+karakter;
Bitiş Döngüsü;
s=d+1; // boşluk geçti
İsim="";

karakter=Ortalama(tam ad, th, 1);
If chars=" " Sonra EndIf'i Durdur;
İsim=Ad+karakter;
Bitiş Döngüsü;
s=d+1; // ikinci boşluğu geç
Orta ad="";
y=s için StrLength(tam ad) Döngüye Göre
karakter=Ortalama(tam ad, th, 1);
If chars=" " Sonra EndIf'i Durdur;
İkinci isim = İkinci isim + sembol;
Bitiş Döngüsü;

// şimdi Soyadı, Adı ve Patronimik ayrı ayrı var.
// gerçek içerik ve vaka analizi bloğu başlar

// kendisi yalınsa dön. ReturnOnlyInitials ayarlanmışsa, baş harflere dönüştürün
Eğer (Left(Case,1)="And") veya (Case=1) O zaman
Yalnızca Baş Harf DEĞİLSE veya Find(Ad, ".") O zaman
Tam ad dönüşü; // ya önceden dönüştürülmüş dizge ya da dönüştürülmesine gerek yok
EndIf;
NewName = TReg(Soyadı) + " " + Vreg(Lev(Ad,1)) + pSeparator + Vreg(Lev(Göbek adı,1)) + pSeparator;
Return SokrLP (Yeni tam ad); // ayırıcının boşluk olması durumunda. son kesim
EndIf;

// cinsiyet M/F'yi analiz et
If Right(Patronymic,1)="a" Sonra Gender="F" Else Gender="M" EndIf;

// Kelime sonlarını saklayan bir tablonun yapısını oluşturun
akım=Yeni Değer Tablosu;
StringType=NewTypeDescription("Dize",NewStringQualifiers(3));
NumberType=NewTypeDescription("Sayı",NewNumberQualifiers(1,0));
current.Columns.Add("StarOk",StringType); // eski biten 2 karakter
// yeni kelime sonlarını saklayan sütunlar
current.Columns.Add("p"); // ebeveyn
current.Columns.Add("d"); // tarih
current.Columns.Add("in"); // suçlayıcı
current.Columns.Add("t"); // yaratıcı
current.Columns.Add("p"); // edat
// kelimenin sonundan kaç harfin kesileceğini belirtmek için,
current.Columns.Add("NumberSlice",NumberType); // kesilen harf sayısı

Ünlüler = "aeeouiyyayu"; // bir dize olarak sesli harflerin listesi

// ======== soyadını işle ==========
// tabloyu soyadı için verilerle doldurun

Eğer cinsiyet = "M" ise
string=geçerli.Add(); // İvanov
string.StarOk="*s";

rows.CountSlice=0;

Satır=geçerli.Add(); // krasinsky
string.StarOk="*th";
string.r="vay"; string.d="mu"; satır.in="th"; string.t="im"; string.p="ohm";
rows.CountSlice=2;

Satır=geçerli.Add(); // her şeye kadir
satır.Starok="sch";
string.r="onun"; string.d="ona"; string.in="onun"; string.t="im"; string.p="ye";
rows.CountSlice=2;

Satır=geçerli.Add(); // Beyaz
string.StarOk="th";
string.r="vay"; string.d="mu"; satır.in="th"; string.t="th"; string.p="ohm";
rows.CountSlice=2;

Satır=geçerli.Add(); // solgun
string.StarOk="*th";

rows.CountSlice=1;

Satır=geçerli.Add(); // rabinoviç
string.StarOk="*h";

rows.CountSlice=0;

Satır=geçerli.Add(); // onarımlar, zaliznyak
string.StarOk="*k";
string.r="ka"; string.d="ku"; line.in="ka"; string.t="com"; string.p="ke";
rows.CountSlice=2;

Satır=geçerli.Add(); // şınkar
string.StarOk="*b";
string.r="i"; string.d="u"; string.in="i"; string.t="ye"; string.p="e";
rows.CountSlice=1;

Satır=geçerli.Add(); // perelman, oganesyan
string.StarOk="*n";

rows.CountSlice=0;

Satır=geçerli.Add(); // Kuzu
string.StarOk="in";
string.r="a"; string.d="y"; satır.in="a"; string.t="th"; string.p="e";
rows.CountSlice=0;

ElseIf Gender="F" Sonra
string=geçerli.Add(); // Sklodovskaya
satır.StarOk="th";
string.r="ayy"; string.d="ayy"; satır.in="th"; string.t="ayy"; string.p="ayy";
rows.CountSlice=2;

Satır=geçerli.Add(); // ıvanova
string.StarOk="*a";
string.r="ayy"; string.d="ayy"; satır.in="y"; string.t="ayy"; string.p="ayy";
rows.CountSlice=1;
EndIf;


EmptyString(Soyadı) Değilse O Zaman
pb=Doğru(Soyadı,3); say = "YıldızOk"; // ı aramak
newLastName=LastName; // hiçbir şey değişmezse, öyle olsun
stro=current.Find(pb, say);
kesinlikle<>


Aksi halde
// kesinlikle son üç karakter tarafından bulunamadı, sadece sonuncusu tarafından iki karakter arıyoruz
pb=Doğru(Soyadı,2);
stro=current.Find(pb, say);
kesinlikle<>O zaman tanımsız
Stem=Lev(LastName, StrLength(Last Name)-stro.CountSlice);
newLastName=Temel+Abb(stro[pad]);
Aksi takdirde // iki tane bulunamazsa, bir tane arıyoruz
pb="*"+Sağ(pb,1);
stro=current.Find(pb, say);
kesinlikle<>
Stem=Lev(LastName, StrLength(Last Name)-stro.CountSlice);
newLastName=Temel+Abb(stro[pad]);


stro=current.Find(pb, say);
kesinlikle<>Undefined O zaman // görüşle bulundu
Stem=Lev(LastName, StrLength(Last Name)-stro.CountSlice);
newLastName=Temel+Abb(stro[pad]);
EndIf;
EndIf;
EndIf;
EndIf;
Aksi halde
yeniSoyadı="";
EndIf;

// ======== adı işle ==========
// tabloyu isim için verilerle doldurun
akım.Temizle();

Cinsiyet = "M" ise
// istisnaları ele al
Name="lion" ise Name="lion" EndIf;
Name="paul" ise Name="paul" EndIf;

Satır=geçerli.Add(); // Sergey
string.starok="*th";
string.r="i"; string.d="u"; string.in="i"; string.t="ye"; string.p="e";
satır.kesme=1;

Satır=geçerli.Add(); // İvan + Lev + Pavel
string.starok="*s";
string.r="a"; string.d="y"; satır.in="a"; string.t="ohm"; string.p="e";
satır.cutoff=0;

Satır=geçerli.Add(); // nikita
string.starok="*a";

satır.kesme=1;

Satır=geçerli.Add(); // yay
string.starok="ka";

satır.kesme=1;

Satır=geçerli.Add(); // yeremya
string.starok="ia";

satır.kesme=1;

Satır=geçerli.Add(); // ilya
string.starok="*i";

satır.kesme=1;

Satır=geçerli.Add(); // igor
string.starok="*ь";
string.r="i"; string.d="u"; string.in="i"; string.t="ye"; string.p="e";
satır.kesme=1;

ElseIf Gender="F" Sonra
// istisnaları ele al
//Eğer Name="olga" O zaman Name="olga" EndIf;

Satır=geçerli.Add(); // Irina
string.starok="*a";
string.r="s"; string.d="e"; satır.in="y"; string.t="ayy"; string.p="e";
satır.kesme=1;

Satır=geçerli.Add(); // Inga, Olga
string.starok="ha";
string.r="ve"; string.d="e"; satır.in="y"; string.t="ayy"; string.p="e";
satır.kesme=1;

Satır=geçerli.Add(); // ester
string.starok="*ь";
string.r="ve"; string.d="ve"; satır.in="b"; string.t="w"; string.p="ve";
satır.kesme=1;

Satır=geçerli.Add(); // maria
string.starok="ia";
string.r="ve"; string.d="ve"; satır.in="u"; string.t="her"; string.p="ve";
satır.kesme=1;

Satır=geçerli.Add(); // sofya
string.starok="*i";
string.r="ve"; string.d="e"; satır.in="u"; string.t="her"; string.p="e";
satır.kesme=1;
EndIf;

// tablo dolu. son 2 harfi say ve ara
EmptyString(Ad) Değilse O Zaman
pb=Doğru(Ad,2); say = "YıldızOk"; // ı aramak
newName=Ad; // hiçbir şey değişmezse, öyle olsun
stro=current.Find(pb, say);
kesinlikle<>Undefined O zaman // hemen katı bulundu


Aksi takdirde // kesinlikle bulunamadı, sadece sonuncusunu arıyoruz
pb="*"+Sağ(pb,1);
stro=current.Find(pb, say);
kesinlikle<>Tanımsız Sonra // en son tarafından bulundu
Base=Lev(Ad, StrLength(Ad)-str. Count Slice);
yeniAd=taban+kısaltma(stro[pad]);
Aksi takdirde // sonuncusu bulunamadı, harfleri türe göre arıyoruz
pb="*"+?(Find(Vowers,Right(pb,1))=0,"s","g");
stro=current.Find(pb, say);
kesinlikle<>Undefined=1 Sonra // türe göre bulundu
Base=Lev(Ad, StrLength(Ad)-str. Count Slice);
yeniAd=taban+kısaltma(stro[pad]);
EndIf;
EndIf;
EndIf;
Aksi halde
yeniAd="";
EndIf;

// ======== Patronimi işleyelim, burada daha kolay ==========
akım.Temizle();

Cinsiyet = "M" ise
string=geçerli.Add();
string.r="a"; string.d="y"; satır.in="a"; string.t="ye"; string.p="e";
satır.cutoff=0;
ElseIf Gender="F" Sonra
string=geçerli.Add();
string.r="s"; string.d="e"; satır.in="y"; string.t="ayy"; string.p="e";
satır.kesme=1;
EndIf;
EmptyString (Patronimik) Değilse O Zaman
Base \u003d Leo (Patronimik, StrLength (Patronimik) - akım. Dilim Sayısı);
yeniPatronimik ad = Temel + Kısaltılmış LP (geçerli [pad]);
Aksi halde
yeni soyadı = "";
EndIf;

IfOnlyInitials O zaman
yeniAd=Aslan(yeniAd,1); newPatronymic=Aslan(newPatronymic,1);
EndIf;

//ilk harfleri büyük harf yap
newLastName=ВReg(Lev(newLastName,1))+Orta(yeniLastName,2);
yeniAd=VReg(Lev(yeniAd,1))+Ortalama(yeniAd,2);
newPatronymic=ВReg(Lev(newPatronymic,1))+Orta(newPatronymic,2);

// ve şimdi her şey bir arada
Eğer InitialsOnly Then // eğer baş harfler formatı belirtilmişse
yeniAd=yeniSoyadı+" "+yeniAd+pAyırıcı+yeniPatronimik+pAyırıcı;
Aksi halde
yeniAd=yeniSoyadı+" "+yeniAd+" "+yeniPatronimik;
EndIf;

Eğer Find(tam isim, ".") ise // Girilen parametrenin baş harfleri ile Soyadı olması durumunda. baş harflerine dokunmayın
yeniAd = yeniSoyadı + " " + TReg(Ad) + Treg(Patronimik);
EndIf;

Dönüş SokrLP (yeni tam ad);
EndFonksiyonlar

Burada Microsoft Excel ile ilgili sorularınızın yanıtlarını alabilirsiniz. 57638 471543
44519 357828
Ana forumdan en çok öne çıkan konular 14 80
Mutlu bir Mac sahibiyseniz 😉 217 1059

21 Eylül 2018 06:21:34

Yerleştirme bölümü paralı sorular, projeler ve görevler ve onlar için yürütücüler arayın. 2100 13379
Microsoft Excel için PLEX eklentisini indirdiyseniz veya satın aldıysanız ve sorularınız veya istekleriniz varsa, lütfen burayı tıklayın. 310 1587
808 11620
İşlevsellik, kurallar vb. 269 3464

Şu anda çevrimiçi (misafir: 590, kullanıcılar: 12, gizli olanlar: 3) ,

Bugün (37), (32), (28), (37), (36), (52)'nin doğum günü

Toplam kayıtlı kullanıcı: 83105

Tartışmaya katıldı: 31843

Toplam konu sayısı: 105875

excelde büyük harf küçültme

Bölümde Diğer diller ve teknolojiler yazar tarafından verilen Excel formatında isimleri otomatik olarak çekmenin mümkün olup olmadığı sorusuna Züfer en iyi cevap İyi günler.
Tam ad, iş unvanları veya departmanlardan bahsediyorsak, yapabilirsiniz. Doğru, bu daha çok geliştirici için bir araçtır. Ancak, kullanıcı bunu da anlayabilir. Örnekler, Excel için hazır makrolar içermektedir.
İyi şanlar!
PS Google'da "Vakalara göre soyadların, adların ve soyadının reddi" anahtarını arayın

22 cevap

Hey! İşte sorunuzun cevaplarını içeren bir dizi konu: isimleri Excel formatında otomatik olarak çekmek mümkün mü?

cevap floş
Hayır, bu özellik Excel'de desteklenmez. Ancak belirli bir durumda, EĞER işlevini kullanarak bir veya diğer seçeneği seçebilirsiniz.

cevap sahne önü
"Programlama" kategorisindesiniz, bu yüzden kimse bu hayır işini yapacak olan VBA'da kendi işlevinizi yazmanızı yasaklayamaz. Ve sadece bu formattaki sorunun çözümü oldukça gerçek.

cevap vaftiz etmek
Rus dilinin reformunun geçtiğini duydum, ancak “isimleri Excel biçiminde tanıtmayı hayal bile edemedim”))))))

MS Excel için özel işlev

Vakalara göre tam adın düşmesi

İşlev, aday davada verilen soyadı, adı ve soyadını başka herhangi bir dava şeklinde görüntülemenizi sağlar.

Uygulama alanı:

İşlev, MS Excel'de belgelerin oluşturulmasını otomatikleştirmek (veya manuel olarak oluşturulmasını kolaylaştırmak) için uygundur, burada tam adın aday durumda değil belirtilmesi gerekir: çeşitli sözleşmeler, nakit siparişler, makbuzlar, mutabakat işlemleri, siparişler , protokoller, vekaletnameler vb.

Otomasyon araçları, MS Word uygulamasında MS Excel tablolarındaki verilere dayanarak yukarıdaki belgelerin oluşumunu uygularsa, işlev de vazgeçilmezdir.

Kullanım örnekleri:

  • sözleşmede: “kafanın şahsında Baranov Petr Vyacheslavovich«
  • nakit varantlarda: "yayınlandı Gnatyuk Pavel Vasilyevich"," alınan Gritsenko Irina Sergeyevna«
  • vekaletnamede: "Aracın yönetimini emanet ediyorum Smirnitsky Vitaly Valerievich«
  • sırayla: "atamak Stepashova Olga Nikolaevna«
  • tutanaklarda: “rapor hazırlandı Dvorzhetsky Nikita İvanoviç«

Uygulanan:

  • BDT ülkelerinin topraklarında ortak olan tüm sonlara sahip soyadları "-ov", "-ev", "-in", "-yan (ts)", "-sky (-tsky)", "-sky (- tsky)" ”, “-th”, “-th”, “-onların”, “-ets”, “-nko”, “-uk”, “-yuk”, “-ich”, “-iya”, vb.: Pavlov, Zinoviev, Gagarin, Petrosyan, Vysotsky, Trubetskoy, Tsoi, Zadorozhny, Sadovnichy, Sedykh, Dolgikh, Soskovets, Nesterenko, Goncharuk, Danilyuk, Rabinovich, Danelia, Kvasha, Vrubel, Kozak, Kazakhok, vb. karşılık gelen kadın soyadları olarak
  • erkek ve kadın soyadlarının çekimlerindeki farklılıklar dikkate alınır: Dokumacı Viktor ve Dokumacı Svetlana, Kozovets Anton ve Kozovets Ekaterina
  • bileşik soyadları doğru işlenir: örneğin, Mamin-Sibiryak, Saltykov-Shchedrin, Nemirovich-Danchenko, Lebedev-Kumach
  • yabancı soyadları azalmaz: Galois, Morois, Defoe, Dali, Meringue, Verdi, Garcia, Hemingway, vb.
  • “-ogly”, “-kyzy”, “ibn” parçacıklarına sahip soyadı başarıyla işlenir: Mammadov Polad Murtuza oglu -> Mamedov Polad Murtuza oglu, Gassan Abdurakhman ibn Khattab -> Hassan Abdurakhman ibn Khattab, Abu Ali ibn Sina -> Abu Ali ibn Sina
  • cinsiyet (erkek/kadın) otomatik olarak üstad tarafından belirlenir ve buna göre uygun çekim kuralları seçilir
  • Cinsiyeti otomatik olarak belirlemenin zor olduğu durumlarda (göbek adı yabancı veya yok), cinsiyeti bir fonksiyon parametresi olarak belirtebilirsiniz.
  • kısaltılmış “soyadı + baş harfleri” biçiminde çıktı mümkündür: Polozov N.A., Vasilyeva A.K., Dvorzhetsky E.E.
  • olarak kullanım imkanı üst yapılar(bu işyerindeki tüm dosyalarda kullanılabilir) ve formda dosyaya gömülü kod(işlev bu dosyada herhangi bir işyerinde çalışacaktır - örneğin dosyanın bir karşı tarafa gönderilmesi uygundur)
  • açık kaynak kodu - dilerseniz algoritmayı inceleyebilir veya değiştirebilirsiniz

Nasıl bağlanır?

Program adı verilen tek bir dosyadır. bdgFIOPropisyu.bas. Belirli bir dosyada kullanmak için işlevin bu dosyaya aktarılması gerekir. Bunun için ihtiyacınız olan:

  1. işlevi kullanmak istediğiniz MS Excel dosyasını açın
  2. "Alt + F11" kısayol tuşuna basarak veya menüden VBA düzenleyicisine girin:
  3. VBA düzenleyicisinin ana menüsünde "Dosya" -> "Dosyayı içe aktar ..." öğesini seçin:
  4. görüntülenen dosya seçim penceresinde dosyayı seçin bdgFIOPropisyu.bas ve "Aç" düğmesini tıklayın:

Her şey, program kodu içe aktarılır ve kullanılabilir.

Nasıl kullanılır?

İşte kullanımına ilişkin birkaç örnek daha:

Bir işlevin çalışabileceği durumlar yanlış:

Fonksiyonun çalışmasının yetersiz olabileceği birkaç durum olmasına rağmen, pratik çalışmada böyle bir tam adla karşılaşma olasılığı oldukça düşüktür, çünkü vakaların% 99,9'unda, Rusya topraklarında bulunan soyadları genel kurallara göre reddedilir.
Ek olarak, diğer algoritmaların ve programların da vakaların %100'ünde sonucun doğruluğunu garanti edemediğine dikkat edilmelidir - Rus dili bir dizi mantıksal kuralla tanımlanamayacak kadar büyük ve güçlüdür (aşağıya bakınız kelimedeki vurgunun konumu, soyadının kökeni, soyadının kadın formunun yazılmasının eril formunun yazılmasından bağımlılık vb.).

  • Rus dilinin kurallarına göre, erkek ve dişinin azalması yabancı Dil"-a" ve "-ya" ile biten soyadlar, vurgunun kelimedeki yerine ve soyadının kökenine bağlıdır.
    ile biten tüm soyadları gerilmemişÜnsüzlerden sonra “-a” azalır: Seneca -> Seneca, Petrarch -> Petrarch, Smetana -> Smetana, Kurosawa -> Kurosawa, Glinka -> Glinka, Okudzhava -> Okudzhava, vb. şok Sonunda “-a” kökenine bağlıdır: Fransız kökenli soyadları eğimli değildir: Dumá, Degá, Fermá, Petipá, vb., diğer kökenli soyadları (Slav ve Doğu dillerinden) eğimlidir: Mitta -> Mitty, Kvasha -> Kvashi, Kızartma tavası -> Kızartma tavaları, Poker -> Pokers, Hamza -> Hamza, vb.
    Benzer şekilde, sonunda “-ya” ile vurgulanan Fransız kökenli soyadları da kabul edilemez: Zola, Troyat. "-ya" üzerindeki diğer tüm soyadları reddedilir: Golovnya -> Golovny, Danelia -> Danilia, Beria -> Beria, Goya -> Goya.
    Vurguların konumlarını ve soyadının kökenini programlı olarak belirlemek imkansız olduğundan, program algoritması bu tür tüm soyadların genel kurallara göre reddedildiğini varsayar. Bu nedenle, sonunda vurgulu Fransız soyadları program tarafından yanlış işlenir: Dumas -> Dumas, Zola -> Zoli, Petipa -> Petipa.
  • "-y", "-y", "-oy" ile biten erkek soyadları, Gorky -> Gorky, Blessed -> Blessed, Armored -> Armored sıfatları gibi reddedilir. İstisnalar, böyle bir sona sahip bir soyadının ortak bir isim olduğu (Kozodoy, Vodopoy, Genii, Scenario) veya yabancı kökenli olduğu durumlardır (Tsoi, Tskhoi, Choi). Bir soyadının böyle bir istisna olup olmadığını programlı olarak belirlemek mümkün olmadığından, "-y", "-y", "-y" sonlarına sahip tüm soyadların sıfat olarak reddedildiği koşullu olarak kabul edilir. Vakaların büyük çoğunluğunda, bu doğrudur, ancak soyadı-isimleri olan istisnai durumlarda, işlevin sonucu hatalı olacaktır: Kozodoy Yakov -> Goat Yakov, Genius Stefan -> Genego Stefan.
    Bununla birlikte, bir istisna olarak, algoritma, bu sonlara sahip ve 5 harften daha kısa (çoğunlukla Korece kökenli) soyadların çekimini dikkate alır: Tsoi Viktor -> Tsoi Viktor.
  • Bazı durumlarda, “-ina”, “-ova” ile biten bir kadın soyadının doğru çekimi, ancak ilgili erkek soyadının çekimi biliniyorsa mümkündür: Zhemchuzhina Lyudmila, Malina Svetlana, olağan biçimde olduğu gibi reddedilebilir: Zhemchuzhina Lyudmila -> Zhemchuzhina Lyudmila, Malina Svetlana -> Malina Svetlana (ilgili erkek soyadları örneğin Zhemchuzhin Boris ve Malin Oleg ise) ve bir isim şeklinde: Zhemchuzhina Lyudmila -> Zhemchuzhina Lyudmila, Malina Svetlana Malina Svetlana (eğer soyadının erkek formları, örneğin, Zhemchuzhina Boris ve Malina Oleg).
    Algoritmada bu tür nüansları hesaba katmak imkansızdır, bu nedenle tüm kadın soyadları, işlev tarafından aynı kurallara göre (sıfat olarak) işlenir, bu da bazı durumlarda yanlış sonuçlara yol açabilir.
  • Benzer bir durum “-ov (a)”, “-ev (a)”, “-in (a)” ile biten ve ortak bir isimle eş sesli olan erkek ve kadın soyadları için de geçerlidir: Borov, Lev, Filin, Barin , Korov, Baykuş, Resim, Tüy, Antik Çağ, vb.). Bir soyadının ve bir ismin kimliğini herhangi bir resmi işaretle programlı olarak belirlemenin bir yolu yoktur, bu nedenle bu tür soyadların tek tip genel kurallara göre çekilmesi, formun yanlış sonuçlarına yol açar: Lev Pavel -> Levy Pavel, Filin Sergey -> Filin Sergey, Korov Ksenia -> Korovaya Kseniya, Owl Olga -> Owl Olga, Painting by Alla -> Painting by Alla.
  • Yumuşak bir işaretle biten erkek soyadları şu şekildedir: Vrubel Mikhail -> Vrubel Mikhail, Gogol Nikolai -> Gogol Nikolai, vb. Bununla birlikte, azalırken, bu tür soyadlarının sonları, ne tür isimler - erkek, kadın veya orta - olduklarına bağlıdır.
    Bir ismin cinsiyetini algoritmik olarak belirlemek mümkün değildir, bu nedenle, bir erkek soyadının dişil veya nötr bir cinsiyete ait bir isim olduğu durumlarda, fonksiyon doğru çalışmayacaktır: Stal Ivan -> Stal Ivan, Wormwood Victor -> Wormwood Victor.
  • "-zha", "-tsa", "-cha", "-sha", "-sha" ile biten araçsal soyadı durumunun oluşumu, kelimedeki vurguya bağlıdır: bu son vurgulanmamışsa, o zaman ne zaman sapma "-ey" olarak değişir: Kapitsa Peter -> Kapitsa Peter, Cloud Fedor -> Cloud Fedor; bitiş vurgulanırsa, “-oy” ile değiştirilir: Kvasha Igor -> Kvasha Igor, Candle Ivan -> Candle Ivan. Durum "-ets" ile biten soyadlarla benzer: vurgu olmadan, bitiş "-em" olarak değişir: Palets Viktor -> Finger Viktor; stres altında - "-th" üzerinde: Soskovets Oleg -> Soskovets Oleg.
    Yukarıda bahsedildiği gibi, bir kelimedeki vurgu konumlarını programlı olarak belirlemek imkansızdır, bu nedenle program algoritması “-zha”, “-tsa”, “-cha”, “-sha”, “ ile biten kelimelerde olduğunu varsayar. -sha” , bitiş vurgusuzdur (böyle kelimeler daha vardır), yani enstrümantal durum her zaman “-ey” bitişiyle oluşturulur. Aksine, “ets” ile biten kelimelerde, bitişin stres altında olduğu, yani çekimin “-om” ile olacağı varsayılır. Buna göre, diğer durumlarda form hataları gözlemlenecektir: Igor Kvasha, Ivan Svechey, Viktor Finger.
  • Rus dilinin kurallarına göre, kendi başına bir soyadı olarak kullanılabiliyorsa, çift Rus soyadının ilk kısmı reddedilir: Mamin-Sibiryak'ın eseri, Saltykov-Shchedrin'in hikayesi, Rimsky-Korsakov'un operası, vb. . Aksi takdirde, değişmez: Van Dyck'in resmi, Don Juan'ın maceraları, Don Kişot'un yaveri vb. Yani, örneğin, Semenov-Tyan-Shansky soyadında, ilk kısım eğimlidir, ancak ikincisi: Semenov-Tyan-Shansky'nin eserleri.
    Yine, soyadının bileşen kısmının bağımsız olup olmadığını belirlemek algoritmik olarak mümkün değildir, bu nedenle, çalışma için bileşik soyadının tüm bölümlerinin reddedilmesi gerektiği varsayılır (çoğu durumda bu böyledir), ki durumların sayısı hatalara yol açar: Van Dyck, Dona - Quixote, Semyonov-Tyan-Shansky.
  • Enstrümantalde "-ov" ve "-in" ile biten yabancı soyadları, bitişi "-om" olarak değiştirir: Benjamin Franklin, Charles Darwin, Charlie Chaplin, Alexander Green. Benzer sonlara sahip "Rus" soyadları "-y" ile biter: Ivanov, Gagarin, Fonvizin, vb. Yukarıda listelenen soyadlarının (Franklin, Darwin, Chaplin, Green) algoritmada istisna olarak dikkate alınmasına rağmen, benzer başka herhangi bir yabancı soyadının ortaya çıkma olasılığı çok düşüktür - bu durumda, işlevin sonucu yanlış olacaktır.

Soyadlarının ve adların çekimine ilişkin kurallar, N. A. Eskova'nın çalışmasının 13.1 ve 13.2 bölümlerine göre kullanılır. İsimlerin çekimindeki zorluklar. "Modern Baskı Dili" kursunda pratik alıştırmalar için eğitim ve metodolojik materyaller(SSCB Devlet Basın Komitesi. Tüm Birlik Baskı İşçilerinin İleri Eğitimi Enstitüsü. M., 1990).

Fiyat: 1500 ruble