Romen rakamları lc. Roma, Hint, Arap rakamlarının (sayıların) çevirisi

Ev / Yeni doğan

Roma rakamları- eski Romalıların konumsal olmayan sayı sistemlerinde kullandıkları sayılar.

Tamsayılar bu sayıların tekrarlanmasıyla yazılır. Ayrıca, daha büyük bir sayı, daha küçük bir sayının önündeyse toplanır (toplama ilkesi), ancak daha küçük bir sayı, daha büyük bir sayının önündeyse, daha küçük olan, daha büyük olandan çıkarılır (toplama ilkesi). çıkarma ilkesi). Son Kural yalnızca aynı rakamın dört kez tekrarlanmasını önlemek için kullanılır.

Etrüskler arasında Roma rakamları MÖ 500 civarında ortaya çıktı.

Sayılar

Sayıların harf tanımlarını azalan sırayla hafızaya sabitlemek için anımsatıcı bir kural vardır:

M S D arim İLE yüz yüze L simgeler, X vatit V Yedi BEN X.

Sırasıyla M, D, C, L, X, V, ben

Büyük sayıları Romen rakamlarıyla doğru yazmak için önce binleri, sonra yüzleri, sonra onlukları ve son olarak da birimleri yazmanız gerekir.

1999 gibi büyük sayıları yazmak için bir "kısayol" vardır. Tavsiye edilmez ancak bazen işleri basitleştirmek için kullanılır. Aradaki fark, bir rakamı azaltmak için soluna herhangi bir rakamın yazılabilmesidir:

  • 999. Bin (M), 1 (I) çıkarın, CMXCIX yerine 999 (IM) elde ederiz. Sonuç: 1999 - MCMXCIX yerine MIM
  • 95. Yüz (C), 5 (V) çıkarın, XCV yerine 95 (VC) elde edin
  • 1950: Bin (M), 50 (L) çıkarın, 950 (LM) elde edin. Sonuç: 1950 - MCML yerine MLM

“Dört” rakamı ancak 19. yüzyılda “IV” olarak yazılıyordu; ondan önce ise en sık “III” rakamı kullanılıyordu. Ancak “IV” girişi, 1390 yılına dayanan Forme of Cury el yazmasının belgelerinde zaten mevcuttur. Saat kadranlarında çoğu durumda, esas olarak estetik nedenlerden dolayı geleneksel olarak "IV" yerine "IIII" kullanılmıştır: bu yazım, karşı taraftaki "VIII" rakamlarıyla görsel simetri sağlar ve ters çevrilmiş "IV" harfinin okunması, "IV" rakamına göre daha zordur. "III".

Romen rakamlarının uygulanması

Rusçada Romen rakamları kullanılır aşağıdaki durumlar:

  • Yüzyıl veya binyıl numarası: XIX yüzyıl, II binyıl M.Ö. e.
  • Hükümdarın seri numarası: Charles V, Catherine II.
  • Çok ciltli bir kitaptaki cilt numarası (bazen kitabın bölümlerinin, bölümlerinin veya bölümlerinin numaraları).
  • Bazı yayınlarda, önsöz değiştirildiğinde ana metin içindeki bağlantıların düzeltilmemesi için kitabın önsözünü içeren sayfa sayıları.
  • Antika saat kadranı işaretleri.
  • Diğerleri önemli olaylar veya öğeleri listeleyin, örneğin: Öklid'in V varsayımı, II Dünya Savaşı, CPSU XXII Kongresi vb.

Diğer dillerde Romen rakamlarının uygulama kapsamı belirli özelliklere sahip olabilir; örneğin Batı ülkelerinde yıl sayısı bazen Romen rakamlarıyla yazılır.

Romen rakamları ve Unicode

Unicode standardı, Roma rakamlarını temsil edecek karakterleri tanımlar. Sayı formları(İngilizce) Sayı Formları), U+2160 ila U+2188 kodlu karakterler alanında. Örneğin, MCMLXXXVIII, ⅯⅭⅯⅬⅩⅩⅩⅧ biçiminde temsil edilebilir. Bu aralık, öncelikle endüstri standartlarındaki Doğu Asya karakter kümeleriyle uyumluluk için 8 (Ⅷ veya VIII) gibi bileşik sayılar için kombinasyon glifleri de dahil olmak üzere 1 (Ⅰ veya I) ila 12 (Ⅻ veya XII) arasındaki hem küçük hem de büyük harfleri içerir. bu karakterlerin tanımlandığı JIS X 0213 olarak. Kombinasyon glifleri, daha önce tek tek karakterlerden oluşan sayıları temsil etmek için kullanılır (örneğin, Ⅹ ve Ⅱ olarak temsil edilmesi yerine Ⅻ). Buna ek olarak, 1000, 5000, 10.000 sayılarının arkaik yazı biçimleri için glifler mevcuttur; büyük karşılıklı C (Ɔ), geç form notasyonu 6 (ↅ, Yunan damgasına benzer: Ϛ), 50 sayısının erken bir gösterimi (ↆ, aşağıyı gösteren ↓⫝⊥ oka benzer), 50.000 ve 100.000'in küçük olduğuna dikkat edilmelidir. karşılıklı c, ↄ, Roma rakamı karakterlerine dahil edilmez, ancak Unicode standardına Claudian'ın büyük harfi Ↄ olarak dahil edilir.

Romen rakamlarını Unicode'a dönüştürme
Kod 0 1 2 3 4 5 6 7 8 9 A B C D e F
Anlam 1 2 3 4 5 6 7 8 9 10 11 12 50 100 500 1 000
U+2160
2160

2161

2162

2163

2164

2165

2166

2167

2168

2169

216A

216B

216C

216D

216E

216F
U+2170
2170

2171

2172

2173

2174

2175

2176

2177

2178

2179

217A

217B

217C

217D

217E

217F
Anlam 1 000 5 000 10 000 - - 6 50 50 000 100 000
U+2160! U+2180
2180

2181

2182

U+2160-217F aralığındaki karakterler yalnızca bu karakterleri tanımlayan diğer standartlarla uyumluluk amacıyla mevcuttur. Günlük yaşamda Latin alfabesinin sıradan harfleri kullanılmaktadır. Bu tür sembollerin görüntülenmesi şunları gerektirir: yazılım Unicode standardını destekleyen bir yazı tipi ve bu karakterlere karşılık gelen glifleri içeren bir yazı tipi.

Harflerin kullanıldığı Roma numaralandırma sistemi iki bin yıldır Avrupa'da yaygındı. Ancak Orta Çağ'ın sonlarında bunun yerini Araplardan alınan daha uygun bir ondalık sayı sistemi aldı. Ancak günümüze kadar Roma rakamları anıtların üzerindeki tarihleri, saatlerin üzerindeki zamanı ve (Anglo-Amerikan tipografi geleneğinde) kitap önsözlerinin sayfalarını belirtmek için kullanılıyor. Ek olarak, Rusça'da sıra sayılarını belirtmek için Romen rakamlarını kullanmak gelenekseldir.

Sayıları belirtmek için Latin alfabesinin 7 harfi kullanıldı: I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000. Ara sayılara birkaç harf eklenerek oluşturuldu. sağ veya sol. Önce binler ve yüzler, sonra onlar ve birlikler yazıldı. Böylece 24 sayısı XXIV olarak tasvir edilmiştir. Sembolün üzerindeki yatay çizgi bin ile çarpma anlamına geliyordu.

Doğal sayılar bu sayıların tekrarlanmasıyla yazılır. Ayrıca, daha büyük bir sayı, daha küçük bir sayının önündeyse toplanır (toplama ilkesi), ancak daha küçük bir sayı, daha büyük bir sayının önündeyse, daha küçük olan, daha büyük olandan çıkarılır (toplama ilkesi). çıkarma ilkesi). Son kural yalnızca aynı sayının dört kez tekrarlanmasını önlemek için geçerlidir. Örneğin I, X, C sırasıyla 9, 90, 900'ü belirtmek için X, C, M'nin önüne veya 4, 40, 400'ü belirtmek için V, L, D'nin önüne yerleştirilir. Örneğin, VI = 5+1 = 6, IV = 5 - 1 = 4 (IIII yerine). XIX = 10 + 10 - 1 = 19 (XVIIII yerine), XL = 50 - 10 =40 (XXXX yerine), XXXIII = 10 + 10 + 10 + 1 + 1 + 1 = 33, vb.

Aritmetik işlemleri gerçekleştirmek çok basamaklı sayılar Bu giriş çok tuhaf. Roma rakamı sistemi, bazı durumlarda MS yüzyılları (XV. Yüzyıl vb.) Belirtmek dışında şu anda kullanılmamaktadır. e. (MCMLXXVII, vb.) ve aylar belirtilirken tarihler (örneğin, 1. V. 1975), sıra sayıları ve bazen üçten büyük küçük derecelerin türevleri: yIV, yV, vb.

Roma rakamları
BEN 1 XI 11 XXX 30 CD 400
II 2 XII 12 XL 40 D 500
III 3 XIII 13 L 50 DC 600
IV 4 XIV 14 LX 60 DCC 700
V 5 XV 15 LXX 70 DCCC 800
VI 6 XVI 16 LXXX 80 SANTİMETRE. 900
VII 7 XVII 17 XC 90 M 1000
VIII 8 XVIII 18 C 100 AA 2000
IX 9 XIX 19 CC 200 MMM 3000
X 10 XX 20 CCC 300

Bugün Rusya'da, yüzyılın veya binyılın sayısını kaydetmek için her şeyden önce Roma rakamlarına ihtiyaç var. Romen rakamlarını Arap rakamlarının yanına yerleştirmek uygundur - eğer yüzyılı Romen rakamlarıyla ve ardından yılı Arapça yazarsanız, aynı işaretlerin bolluğu gözleriniz kamaşmayacaktır. Romen rakamları belirli bir arkaizm çağrışımına sahiptir. Ayrıca geleneksel olarak hükümdarın seri numarasını (Peter I), çok ciltli bir yayının cilt numarasını ve bazen bir kitabın bölümünü belirtmek için kullanılırlar. Antika saat kadranlarında da Romen rakamları kullanılmaktadır. Olimpiyat yılı veya bilimsel bir yasanın numarası gibi önemli sayılar da Roma rakamları kullanılarak kaydedilebilir: II. Dünya Savaşı, Öklid'in V önermesi.

Farklı ülkelerde, Romen rakamları biraz farklı şekilde kullanılır: SSCB'de yılın ayını bunları kullanarak belirtmek gelenekseldi (1.XI.65). Batı'da yıl sayısı genellikle filmlerin jeneriğinde veya binaların cephelerinde Romen rakamlarıyla yazılır.

Avrupa'nın bazı kısımlarında, özellikle Litvanya'da, haftanın günlerini genellikle Roma rakamlarıyla (I – Pazartesi vb.) belirtilen şekilde bulabilirsiniz. Hollanda'da bazen zeminleri belirtmek için Romen rakamları kullanılır. İtalya'da ise rotanın 100 metrelik bölümlerini işaretliyorlar, aynı zamanda her kilometreyi Arap rakamlarıyla işaretliyorlar.

Rusya'da elle yazarken, alttaki ve üstündeki Romen rakamlarını aynı anda vurgulamak gelenekseldir. Bununla birlikte, çoğu zaman diğer ülkelerde alt çizgi, sayının büyüklüğünü 1000 kat (veya çift alt çizgiyle 10.000 kat) artırmak anlamına geliyordu.

Modern Batı giysi bedenlerinin Romen rakamlarıyla bir bağlantısı olduğuna dair yaygın bir yanılgı vardır. Aslında tanımlamalar XXL, S, M, L vb.'dir. onlarla hiçbir bağlantısı yoktur: bunlar kısaltmalardır ingilizce kelimeler eXtra (çok), Küçük (küçük), Büyük (büyük).

Kadranında Romen rakamları bulunan Spasskaya Kulesi çanlı saat Kültürdeki rakam sistemleri Hint-ArapDoğu AsyaAlfabetikDiğer Konumsal Karışık sistemler Konumsal olmayan
Arapça
Tamilce
Birmanya
Kmer
Laos dili
Moğolca
Tay dili
Çince
Japonca
Suzhou
Koreli
Vietnam
Sayma çubukları
Abjadia
Ermeni
Aryabhata
Kiril
Yunan
Etiyopya
Yahudi
Akshara-sankhya
Babil
Mısırlı
Etrüsk
Roma
Tuna
Çatı katı
Kipu
Maya
Ege
KPPU sembolleri
2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 60
Nega-konumsal
Simetrik
Fibonacci
Birim (tekli)

Roma rakamları- eski Romalıların konumsal olmayan sayı sistemlerinde kullandıkları sayılar.

Doğal sayılar bu sayıların tekrarlanmasıyla yazılır. Ayrıca, daha büyük bir sayı, daha küçük bir sayının önündeyse toplanır (toplama ilkesi), ancak daha küçük bir sayı, daha büyük bir sayının önündeyse, daha küçük olan, daha büyük olandan çıkarılır (toplama ilkesi). çıkarma ilkesi). Son kural yalnızca aynı sayının dört kez tekrarlanmasını önlemek için geçerlidir.

Romen rakamları MÖ 500'de Etrüskler arasında ortaya çıktı ve bu rakamlar bazı rakamları proto-Keltlerden almış olabilir.

Roma rakamları

Numara Tanımı
1 BEN
2 II
3 III
4 IV, 19. yüzyıla kadar - III
5 V
6 VI
7 VII
8 VIII (bazen - IIX)
9 IX (bazen VIII)
10 X
20 XX
30 XXX
40 XL
50 L
60 LX
70 LXX
80 LXXX
90 XC
100 C
200 CC
300 CCC
400 CD
500 D; ben
600 DC; I°C
700 DCC; I°CC
800 DCCC; IↆCCC
900 SANTİMETRE; CCİ°
1 000 M; ↀ; CI°
2 000 MM; CI°CI°
3 000 MMM; CI°CI°CI°
3 999 MMMCMXCIX
4 000 MV; ↀↁ; CI°I°
5 000 V; ↁ; Ben
6 000 VM; ↁↀ; I°°CI°
7 000 VMM; ↁↀↀ; I°°CI°CI°
8 000 VMMM; ↁↀↀↀ; I°°CI°CI°CI°
9 000 IX; ↀↂ; CI°CCI°
10 000 X; ↂ; CCI°
20 000 XX; ↂↂ; CCI°CCI°
30 000 XXX; ↂↂↂ; CCI°°CCI°°CCI°°
40 000 XL; ↂↇ; CCI°°I°°°
50 000 L; ↇ; Ben
60 000 LX; ↇↂ; I°°°°CCI°
70 000 LXX; ↇↂↂ; I°°°°CCI°°CCI°°
80 000 LXXX; ↇↂↂↂ; I°°°°CCI°°CCI°°CCI°
90 000 XC; ↂↈ; CCI°°CCCI°°°
100 000 C; ↈ; CCCI°
200 000 CC; ↈↈ; CCCI°°°CCCI°°°°
300 000 CCC; ↈↈↈ; CCCI°°°°CCCI°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
400 000 CD; CCCI°°°°°°°°°
500 000 D; I°°°°°°
600 000 DC; I°°°°°CCCI°°°
700 000 DCC; I°°°°°°CCCI°°°°CCCI°°°°
800 000 DCCC; I°°°°°CCCI°°°°CCCI°°°°CCCI°°°
900 000 SANTİMETRE; CI; CCCI°°°°CCCCI°°°°°°
1 000 000 M; BEN; CCCCI°

daha fazla yok üç kere sözleşme en fazla 3999 kaynak belirtilmedi 2369 gün

XXXII- özellikle, Rusça el yazısı metinlerde Romen rakamlarını vurgulamak gelenekseldir (bu, teknik karmaşıklık nedeniyle dizgide kullanılmaz). Diğer yazarlar için üst çizgi, rakamın değerinde 1000 kat artış olduğunu gösterebilir: V = 5000.

Geleneksel “IIII” yazımı ile Tissot saati

“Dört” rakamı ancak 19. yüzyılda “IV” olarak yazılıyordu; ondan önce ise en sık “III” rakamı kullanılıyordu. Ancak “IV” girişi, 1390 yılına dayanan Forme of Cury el yazmasının belgelerinde zaten mevcuttur. Saat kadranlarında çoğu durumda, esas olarak estetik nedenlerden dolayı geleneksel olarak "IV" yerine "IIII" kullanılmıştır: bu yazım, karşı taraftaki "VIII" rakamlarıyla görsel simetri sağlar ve ters "IV" harfinin okunması, "IV" rakamına göre daha zordur. "III". Kadran üzerinde IV yazılmayan bir versiyonu da vardır çünkü IV, tanrı Jüpiter'in adının ilk harfleridir (IVPITER).

Küçük olan sayı büyüğün soluna yazılabilir, sonra büyük olandan çıkarılmalıdır. Bu durumda, yalnızca 1'i gösteren sayılar veya 10'un kuvvetleri çıkarılabilir ve sayı serisinde yalnızca çıkana en yakın iki rakam (yani çıkanın 5 veya 10 ile çarpılması) eksilen olarak kullanılabilir. Daha küçük bir sayının tekrarına izin verilmez. Böylece var yalnızca altı seçenek“çıkarma kuralını” kullanarak:

  • IV = 4
  • IX = 9
  • XL=40
  • XC = 90
  • CD = 400
  • CM = 900

Örneğin, 94 sayısı XCIV = 100 − 10 + 5 − 1 = 94 olacaktır - sözde “çıkarma kuralı” (geç antik çağda ortaya çıktı ve bundan önce Romalılar 4 sayısını IIII ve 40 sayısını yazıyordu). XXXX olarak).

Diğer “çıkarma” yöntemlerinin kabul edilemez olduğu unutulmamalıdır; bu nedenle 99 sayısı IC olarak değil XCIX olarak yazılmalıdır. Ancak günümüzde, bazı durumlarda Romen rakamlarının basitleştirilmiş bir gösterimi de kullanılmaktadır: örneğin, Microsoft Excel'de, Arap rakamlarını “ROMAN()” işlevini kullanarak Roma rakamına dönüştürürken, sayıların çeşitli gösterim türlerini kullanabilirsiniz, klasikten son derece basitleştirilmişe kadar (örneğin 499 sayısı CDXCIX, LDVLIV, XDIX, VDIV veya ID olarak yazılabilir). Basitleştirme, bir rakamı azaltmak için soluna başka herhangi bir rakamın yazılabilmesidir:

Bu tür sayıların (genellikle yıllar) kaydedildiği durumlara genellikle ABD televizyon dizilerinin jeneriğinde rastlanır. Örneğin, 1998 yılı için: MCMXCVIII yerine IIMM.

Başvuru

B. N. Yeltsin'in imzası 10 Kasım 1988. Ay, Romen rakamlarıyla gösterilir. Vilnius'ta bir mağazanın vitrininde haftanın gününü gösteren Romen rakamları
  • Monarch seri numarası
  • Silahlı Kuvvetlerdeki kolordu numarası
  • Rus Silahlı Kuvvetlerinin üniforma yamalarındaki kan grubu
  • Homeopatik seyreltmelerin temeli (Conium X3, Aconitum C200, vb.).
  • Matematiksel analizde üçüncünün üzerindeki türevin sayısı bazen Romen rakamlarıyla yazılır.

Yılın ayını belirtmek için tarihi belirtirken SSCB'de Roma rakamları yaygın olarak kullanılıyordu, örneğin: 11/III-85 veya 9.XI.89, bu o zamanların birçok arşiv belgesinde görülebilir. Benzer şekilde sınıf günlüklerine dersin tarihini de eğik çizgi kullanarak yazdılar, örneğin: 24/II. Mezar taşlarında yaşam ve ölüm tarihlerini belirtmek için sıklıkla özel bir format kullanılırdı; yılın ayı da Romen rakamlarıyla gösterilirdi, örneğin: 18 6 X I I 78 ∼ 19 5 I I I 53 (\displaystyle 18(\frac ( 6)(XII))78\sim 19 (\frac (5)(III))53) . Benzer bir format 1970'li ve 1980'li yıllarda sağlık sertifikalarında da kullanıldı.

Bilginin bilgisayarla işlenmesine geçişle birlikte, Romen rakamlarına dayanan tarih formatları neredeyse kullanım dışı kaldı.

Diğer dillerde Romen rakamlarının uygulama kapsamı belirli özelliklere sahip olabilir. Batı ülkelerinde yıl sayısı, örneğin binaların çatılarında ve film ve video ürünlerinin jeneriğinde genellikle Romen rakamlarıyla yazılır.

Modern Litvanya'da yol işaretleri, mağaza vitrinlerinde ve iş tabelalarında Romen rakamları haftanın günlerini gösterebilir.

Unicode

І · Ԁ · I · I · l · ﺍ‎‎ · ו‎‎ · Ι · ǀ · | · ɪ · 丨 Benzer ana hatlara sahip semboller: V · V · ∨ · ⋁ · ⋎ Benzer ana hatlara sahip semboller: X·Χ·Х·ㄨ Benzer ana hatlara sahip semboller: L·Լ Benzer ana hatlara sahip semboller: C · Ç · Ϲ · င Benzer bir taslağa sahip bir sembol: D Benzer ana hatlara sahip semboller: M · Μ · M · Ϻ Benzer ana hatlara sahip semboller: ʕ · Ҁ · Ϟ · Ϛ · Ⴚ

Sayı formları(İngilizce) Sayı Formları) U+2160 ila U+2188 kodlu karakterler alanında. Örneğin, MCMLXXXVIII, ⅯⅭⅯⅬⅩⅩⅩⅧ biçiminde temsil edilebilir. Bu aralık, 1 (Ⅰ veya I) ile 12 (Ⅻ veya XII) arasındaki sayıları yazmak için hem küçük hem de büyük harfleri içerir; esas olarak Doğu Asya karakter kümeleriyle uyumluluğu sağlamak için 8 (Ⅷ veya VIII) gibi bileşik sayılar için kombinasyon glifleri de içerir bu karakterlerin tanımlandığı JIS X 0213 gibi endüstri standartlarında. Kombinasyon glifleri, daha önce tek tek karakterlerden oluşan sayıları temsil etmek için kullanılır (örneğin, Ⅹ ve Ⅱ olarak temsil edilmesi yerine Ⅻ). Buna ek olarak, 1000, 5000, 10.000'in arkaik biçimleri için glifler mevcuttur; majör ters C (Ɔ), 6'nın geç biçimi (ↅ, Yunan damgasına benzer: Ϛ), 50'nin erken biçimi (ↆ, aşağıyı gösteren ok ↓⫝⊥), 50.000 ve 100.000'e benzer. Küçük küçük c, ↄ'nin Romen rakamı karakterlerine dahil edilmediğine, ancak Unicode standardına Claudian başkenti Ↄ olarak dahil edildiğine dikkat edilmelidir.

Unicode Romen Rakamları Kod 0 1 2 3 4 5 6 7 8 9 A B C D E F Değeri 1 2 3 4 5 6 7 8 9 10 11 12 50 100 500 1 000 U+2160 U+2170 Değeri 1 000 5 000 10 000 100 6 50, 000 100.000 U+2180

Bu karakterlerin tümünün görüntülenmesi, Unicode standardını destekleyen bir yazılım ve bu karakterlere karşılık gelen glifleri içeren bir yazı tipi (örneğin, Universalia yazı tipi) gerektirir.

Düzenli ifadeler

Roma rakamlarını kontrol etmek için kullanılan normal ifade şöyledir: ^(M(0,3))(D?C(0,3)|C)(L?X(0,3)|X)(V?I(0,3) | I)$ Perl'de, bulmak için m/\b((?:M(0,3)?(?:D?C(0,3)|C)?(?:L) normal ifadesini kullanabilirsiniz. Bir dizedeki Romen rakamları ?X(0,3)|X)?(?:I(0,3)?V?I(0,3)|I)))\b/gs.

Dönüştürmek

Arap rakamlarıyla yazılan sayıları Romen rakamlarına dönüştürmek için özel işlevler kullanılır. Örneğin, Microsoft Excel'in Rusça sürümünde bunun için bir işlev vardır. ROMA ROMA(argüman).

JavaScript'te dönüştürme işlevleri var arab = ; var roman = ["I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", CM ","M"]; function arabToRoman(sayı) ( if(!sayı) return ""; var ret = ""; var i = arab.length - 1; while(sayı > 0) ( if(sayı >= arab[i]) ( ret + = roman[i]; sayı -= arab[i]; ) else ( i--; ) ) return ret; function romanToArab(str) ( str = str.toUpperCase(); var ret = 0; var i = arab . uzunluk - 1; var konum = 0 while(i >= 0 && konum< str.length) { if(str.substr(pos, roman[i].length) == roman[i]) { ret += arab[i]; pos += roman[i].length; } else { i--; } } return ret; } Аналогичные функции на Си (C89): #include const int arabar = { 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000}; const char *romanar = { "I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"}; char *arab2roman(unsigned short int arab) { static char roman; const int m = sizeof(arabar)/sizeof(int)-1, arabmax=arabar[m]; const char romanmax=romanar[m]; int i, n; if(!arab) { *roman=0; return roman; } i=0; while(arab>arabmax) ( roman = romanmax; arap -= arabmax; ) n=m; while(arab > 0) ( if(arab >= arabar[n]) ( roman = romanar[n]; if(n&1) roman = romanar[n]; arab -= arabar[n]; ) else n--; ) roman[i]=0; romana dönüş; ) unsigned short int roman2arab(char *roman) ( const int m = sizeof(arabar)/sizeof(int)-1; unsigned short int arab; int len, n, i, pir; len=strlen(roman); arab= 0; n=m; while(n >= 0 && i< len) { pir=n&1; if(roman[i] == romanar[n] && (!pir || roman == romanar[n])) { arab += arabar[n]; i += 1+pir; } else n--; } return arab; } Программа перевода арабских цифр в римские и наоборот type str2 = string; const Rims: array of str2 = ("M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"," "); Arab: array of integer = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1, 0); var N, NI, I, J: integer; S: string; function Arab2Rim(N: integer) : string; var S: string; I: integer; begin S:= ""; I:=1; while N >0 başlarken Arab[I]"" başlarken Jantlar[I] = Kopya(S, 1, Uzunluk(Jant[I])) başlar S:= Kopyala(S, 1+Uzunluk(Jantlar[I]) , 255); N:= N + Arap[I] sonu; I:=I+1 son; Jant2Arab:= N ucu; begin WriteLn("Arapçadan Romen rakamlarına çeviri. 1999 B_SA"); ( Write("Dönüştürülecek sayıyı girin:"); ReadLn(N);) NI için:= 26 - 46 do WriteLn(NI," = ",Arab2Rim(NI)," ters ", Rim2Arab(Arab2Rim(NI) ) ); son. Pascal'da Arap sayısını Roma sayısına dönüştürme işlevi Arab2Roman(arab:integer):string; var i:tamsayı; d:tamsayı; arab_str:string; arab_len:tamsayı; başla Sonuç:= ""; arab_str:= IntToStr(arab); arab_len:= Uzunluk(arab_str); i:= 0'dan arab_len-1'e kadar do begin d:= StrToInt(String(arab_str)); if (d+1) mod 5 = 0 ardından Sonuç:= Kopyala("IXCM", 1+i, 1) + Kopyala("VXLCDM", i*2 + (d+1) div 5, 1) + Sonuç else Sonuç:= Kopyala("VLD", 1+i, d div 5) + Kopyala("IIIXXXCCCMMM", 1+i*3, (d mod 5)) + Sonuç; son; son;

BASIC'te Arap rakamını Roma rakamına dönüştürme fonksiyonu (en kısa kod) 10 INPUT "ARABIC NUMBER: "; А$ 20 I=0 İÇİN LEN(A$)-1 30 X=VAL(MID$(A$,LEN(A$)-I,1)) 40 IF X=4 VEYA X=9 SONRA B$= MID$("IXCM",I+1,1)+MID$("VXLCDM",I*2+(X+1)/5,1)+B$ 50 IF X4 AND X Arapça sayı dönüştürme fonksiyonu (bunda case 1999) XPath'ta Roman dilinde string-join((1999'daki $num için) return (("", "M", "MM", "MMM")[($num idiv 1000) mod 10+1], ( "", "", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM")[($num idiv 100) mod 10+1 ], ("", "X", "XX", "XXX", "XL", "L", "LX", "LXX", LXXX, "XC")[($num idiv 10) mod 10+1], ("""""""II""III""IV""V""VI"VII"VIII"IX")[$num mod 10 +1]), "") Perl'de Arap rakamını (bu durumda 1999) Roma rakamına dönüştürme işlevi use strict; uyarıları kullanın; benim $n = 1999; $num'larım = [ ["", qw(I II III IV V VI VII VIII IX) ], ["", qw(X XX XXX XL L LX LXX LXXX XC) ], ["", qw(C CC CCC) CD D DC DCC DCCC CM) ], ["", qw(M MM MMM) ] ]; benim $i = 0; benim @res = (); @res, ($nums->[$i++][ ($n % 10, $n = int($n / 10)) ]) için 0 .. 3'e basın; tersten yazdır @res; Java'da Arapça sayıları (1'den 3999'a kadar) Romen sayısına dönüştüren sınıf java.util.*; public class IntegerConverter ( public static String intToRoman(int number) ( if (number >= 4000 || number iterator = üniteler.descendingKeySet().iterator(); while (iterator.hasNext()) ( Integer key = iterator.next( ); while (sayı >= anahtar) ( sayı -= anahtar; result.append(units.get(anahtar)); ) return result.toString(); özel statik final NavigableMap birimleri static ( NavigableMap initMap = new TreeMap;<> (); initMap.put(1000, "M"); initMap.put(900, "CM"); initMap.put(500, "D"); initMap.put(400, "CD"); initMap.put(100, "C"); initMap.put(90, "XC"); initMap.put(50, "L"); initMap.put(40, "XL"); initMap.put(10, "X"); initMap.put(9, "IX"); initMap.put(5, "V"); initMap.put(4, "IV"); initMap.put(1, "I"); birimler = Collections.unmodifiableNavigableMap(initMap); ) ) CSharp'ta Romen rakamlarını Arapça ve geriye dönüştürmek için genişletme sınıfı /// /// Sınıf, Arap sayılarını Romen sayılarına ve geriye dönüştürmek için tasarlanmıştır /// /// /// Sınıf başlangıçta bir alfabe içerir: 1'den 39999'a kadar olan Arap rakamlarını belirleyebilen Roma rakamları /// Aralığı genişletmeniz gerekiyorsa, /// BasicRomanNumbers alanını kullanarak Roma rakamları için ek gösterimler tanımlayabilirsiniz public static class RomanNumber ( /// /// Alphabet temel Roma rakamlarının listesi /// Alfabe şu biçimde oluşturulmuştur Sözlük anahtarı Arap rakamıdır (int), değer karşılık gelen /// Roma rakamıdır (string) /// /// /// Roma rakamını içerir Arap sayıları için notasyon 1*,4*,5*,9* - burada "*" 0...N sıfırı temsil eder /// Oluşturulduğunda, 1'den 10000'e kadar olan sayıların gösterimini içerir (I...ↂ) Romen rakamında bir karakter /// üç kereden fazla görünemeyeceğinden, başlangıçta 1'den 39999'a kadar olan sayıları Romen formatına dönüştürebilirsiniz /// Çok sayıda Romen rakamıyla çalışabilmek istiyorsanız, o zaman 1*,4*, 5*,9* elemanlarını atlamadan 40000'den başlayarak /// listeye ek notasyonlar eklemelisiniz. /// public static SortedList BasicRomanNumbers ( get; set; ) static RomanNumber() ( BasicRomanNumbers = new SortedList(17); BasicRomanNumbers.Add(1, "I"); BasicRomanNumbers.Add(4, "IV"); BasicRomanNumbers. Add(5, "V"); BasicRomanNumbers.Add(9, "IX"); BasicRomanNumbers.Add(10, "X"); BasicRomanNumbers.Add(50, "L"); "); "); Temel Romen Rakamları.Add(90, "XC"); Temel Romen Rakamları.Add(100, "C"); Temel Romen Rakamları.Add(400, "CD"); (500, "D"); Temel Romen Rakamları.Add (900, "CM"); BasicRomanNumbers.Add(1000, "M"); BasicRomanNumbers.Add(4000, "Mↁ"); ↁ"); BasicRomanNumbers.Add(9000, "Mↂ" ); BasicRomanNumbers.Add(10000, "ↂ" ) /// /// Geçerli Romen sayı alfabesi için mümkün olan maksimum Romen sayısını hesaplar. /// /// Mümkün olan maksimum Romen rakamı public static uint MaximumRomanNumber() ( int lastNumber = BasicRomanNumbers. Keys.Last(); int numberWithoutZeros = int.Parse(lastNumber.ToString().Replace("0","\0")); int ön=0; switch (numberWithoutZeros) ( durum 1: ön = sonNumber * 4 - 1; break; durum 4: durum 9: ön = sonNumber; break; durum 5: ön = lastNumber + lastNumber / 5 * 3; break; varsayılan: break; ) return uint.Parse(preliminary.ToString().Replace("0", "9"));; ) /// /// Bir tamsayıyı Romen rakamına dönüştürür /// /// Romen notasyonuna dönüştürülmesi gereken Arapça bir sayı /// Bir sayı "0"a eşit olduğunda oluşturulur /// veya daha büyük bir sayı Maksimumdan daha fazlası parametre olarak Romen rakamı olarak iletilir. /// Bir Roma rakamını temsil eden bir dize public static string ArabicRoman(this int numberArab) ( StringBuilder numberRoman = new StringBuilder(); //"-" işaretini Arap sayısından hariç tutun ve eğer bunu Roma rakamının ilk karakteri yapın (sayıArap< 0) { числоРимское.Append("-"); числоАраб = -числоАраб; } if (числоАраб == 0) throw new ArgumentOutOfRangeException("числоАраб", числоАраб, "Недопустимое значение аргумента: римские числа не могут быть равными\"0\""); else if (числоАраб >MaximumRomanNumber()) throw new ArgumentOutOfRangeException("numberArab", numberArab, string.Format("Geçersiz argüman değeri: (0)'dan büyük bir Romen rakamı belirtmek mümkün değildir", MaximumRomanNumber())); //Arap sayısını kendisini oluşturan Romen sayılarına ayrıştırıyoruz ve bunları tek bir satırda birleştiriyoruz. Temel Roma Sayıları = 'dan itibaren'ye kadar Temel Roma Sayıları'nda. Anahtarlar nerede to = 1) ( Arap sayısı -= güncel; Roma numarası. Ekle (Temel Roma Sayıları) Roma Sayıları [geçerli]); ) ) Roma sayısını döndürür .ToString(); ) /// /// Romen rakamlarını Arap rakamlarına dönüştürür /// /// Roma rakamı, int türüne dönüştürülmesi gerekir /// Romen olmayan bir sayı parametre olarak iletildiğinde oluşturulur /// Romen rakamının Arapça gösterimini temsil eden bir tamsayı public static int Roman Arabic(bu dize Roma numarası) ( int Arabic sayı = 0; sbyte negatif = 1; string roma = roman numarası.Trim(); if ( roma == "-") ( negatif = -1; roma = roma numarası.Substring(1); ) StringBuilder şablonRomanNumbers = new StringBuilder (); .Keys) ( int index = Temel Roma Numaraları.Keys.IndexOf(k); string quantifier="?"; if (index == 0 || (index % 4) == 0) quantifier="(0 ,3)"; şablonRomanNumbers.Insert(0, string.Format("(?(1))(2))?", k.ToString(), BasicRomanNumbers[k], quantifier)) ​​) //Büyük/küçük harf dikkate alınmaz + eşleşme RomanNumber dizisinin başlangıcıyla başlamalıdır model.Insert(0, "(?i)^"); //Eşleşme RomanNumber dizisinin sonunda bulunmalıdır.Append("$"); IVII if (!Regex.IsMatch(Roman, şablonRomanNumber.ToString())) throw new FormatException(string.Format("Text \"(0)\" is not a Romen rakamı", numberRoman) gibi hataları kontrol etmez. ); Eşleşme numarası = Regex.Match(Roman, şablonRomanNumber.ToString()); foreach (int to in BasicRomanNumbers.Keys) ( numberArab += number.Groups[to.ToString()].Length / BasicRomanNumbers[to].Length * to; ) return numberArab * negatif; ))

Romen rakamları şunlardır:

Romen rakamları Spasskaya Kulesi çan saati Kültürdeki rakam sistemleri Hint-Arap sayı sistemiDoğu Asya sayı sistemleriAlfabetik sayı sistemleriDiğer sistemler Konumsal sayı sistemleri Karışık sayı sistemleri Konumsal olmayan sayı sistemleri
Arapça
Hintli
Tamilce
Birmanya
Kmer
Lao
Moğolca
Tay dili
Çince
Japonca
Suzhou
Koreli
Vietnam
Sayma çubukları
Abjadia
Ermeni
Aryabhata
Kiril
Yunan
Etiyopya
Yahudi
Katapayadi
Babil
Mısırlı
Etrüsk
Roma
Çatı katı
Kipu
Mayskaya
Ondalık sayı sistemi (10)
2, 3, 4, 5, 6, 7, 8, 9, 12, 16, 20, 60
Nega-konumsal sayı sistemi
Simetrik sayı sistemi
Fibonacci sayı sistemi
Birim (tekli) sayı sistemi
Sayı sistemlerinin listesi

Roma rakamları- eski Romalıların konumsal olmayan sayı sistemlerinde kullandıkları sayılar.

Doğal sayılar bu sayıların tekrarlanmasıyla yazılır. Ayrıca, daha büyük bir sayı, daha küçük bir sayının önündeyse toplanır (toplama ilkesi), ancak daha küçük bir sayı, daha büyük bir sayının önündeyse, daha küçük olan, daha büyük olandan çıkarılır (toplama ilkesi). çıkarma ilkesi). Son kural yalnızca aynı sayının dört kez tekrarlanmasını önlemek için geçerlidir.

Roma rakamları MÖ 500'de Etrüskler arasında ortaya çıktı.

Sayılar

Roma rakamları

Rus dilinde, sayıların harf tanımlarını azalan sırayla hafızaya sabitlemek için anımsatıcı kurallar vardır:

M S D arim İLE yüz yüze L simgeler, X vatit V Yedi BEN X.

M S D yeriz C ipuçları L Bakmak X Tamam V iyi huylu BEN bireylere

Sırasıyla M, D, C, L, X, V, ben

Örnekler

Sayı Roma notasyonu Not

Büyük sayıları Romen rakamlarıyla doğru yazmak için önce binleri, sonra yüzleri, sonra onlukları ve son olarak da birimleri yazmanız gerekir.

Bu durumda bazı rakamlar (I, X, C, M) tekrarlanabilir ancak en fazla üç kez; dolayısıyla herhangi bir tam sayıyı yazmak için kullanılabilirler en fazla 3999(MMMCCMXCIX). İÇİNDE erken dönemler daha büyük sayıları gösteren işaretler vardı - 5000, 10.000, 50.000 ve 100.000[ kaynak belirtilmedi 683 gün] (bu durumda belirtilen kurala göre maksimum sayı 399.999'dur). Romen rakamı sisteminde sayıları yazarken, küçük rakam büyük rakamın sağında görünebilir; bu durumda ona eklenir. Örneğin Latin alfabesinde 283 sayısı CCLXXXIII yani 100+100+50+30+3=283 şeklinde yazılır. Burada yüzü temsil eden rakam iki kez, on ve biri temsil eden rakamlar ise üç kez tekrarlanıyor.

Örnek: sayı 1988. Bin M, dokuz yüz CM, sekiz onluk LXXX, sekiz birim VIII. Bunları birlikte yazalım: MCMLXXXVIII.

Çoğu zaman metindeki sayıları vurgulamak için üzerlerine bir çizgi çizilirdi: LXIV. Bazen hem üstüne hem de altına bir çizgi çizilirdi: XXXII- özellikle, Rusça el yazısı metinlerde Romen rakamlarını vurgulamak gelenekseldir (bu, teknik karmaşıklık nedeniyle dizgide kullanılmaz). Diğer yazarlar için üst çizgi, rakamın değerinde 1000 kat artış olduğunu gösterebilir: VM = 6000.

Geleneksel “IIII” yazımı ile Tissot saati

“Dört” rakamı ancak 19. yüzyılda “IV” olarak yazılıyordu; ondan önce ise en sık “III” rakamı kullanılıyordu. Ancak “IV” girişi, 1390 yılına dayanan Forme of Cury el yazmasının belgelerinde zaten mevcuttur. Saat kadranlarında çoğu durumda, esas olarak estetik nedenlerden dolayı geleneksel olarak "IV" yerine "IIII" kullanılmıştır: bu yazım, karşı taraftaki "VIII" rakamlarıyla görsel simetri sağlar ve ters çevrilmiş "IV" harfinin okunması, "IV" rakamına göre daha zordur. "III".

Küçük olan sayı büyüğün soluna yazılabilir, sonra büyük olandan çıkarılmalıdır. Bu durumda daha küçük bir sayının tekrarına izin verilmez. Roma dilinde 94 sayısı XCIV=100-10+5-1=94 olacaktır - sözde "çıkarma kuralı" (Antik çağın sonlarında ortaya çıktı ve bundan önce Romalılar 4 sayısını IIII ve 40 sayısını yazıyordu). XXXX olarak). "Çıkarma kuralını" kullanmanın altı yolu vardır:

  • IV = 4
  • IX = 9
  • XL=40
  • XC = 90
  • CD = 400
  • CM = 900

Diğer “çıkarma” yöntemlerinin kabul edilemez olduğuna dikkat edilmelidir; bu nedenle 99 sayısı IC olarak değil XCIX olarak yazılmalıdır. Ancak günümüzde, bazı durumlarda Romen rakamlarının basitleştirilmiş bir gösterimi de kullanılmaktadır: örneğin, Microsoft Excel'de, Arap rakamlarını “ROMAN()” işlevini kullanarak Roma rakamına dönüştürürken, sayıların çeşitli gösterim türlerini kullanabilirsiniz, klasikten son derece basitleştirilmişe kadar (örneğin 499 sayısı CDXCIX, LDVLIV, XDIX, VDIV veya ID olarak yazılabilir). Basitleştirme, bir rakamı azaltmak için soluna başka herhangi bir rakamın yazılabilmesidir:

  • 999. Bin (M), 1 (I) çıkarın, CMXCIX yerine 999 (IM) elde ederiz. Sonuç: 1999 - MCMXCIX yerine MIM
  • 95. Yüz (C), 5 (V) çıkarın, XCV yerine 95 (VC) elde edin
  • 1950: Bin (M), 50 (L) çıkarın, 950 (LM) elde edin. Sonuç: 1950 - MCML yerine MLM

Romen rakamlarını kullanarak yazabilirsiniz büyük sayılar. Bunun için binleri ifade eden sayıların üzerine çizgi, milyonları ifade eden sayıların üzerine ise çift çizgi konur. Örneğin, 123123 sayısı şu şekilde görünecektir:

Ve bir milyon da benim gibidir, ama başında bir değil iki özellik vardır: Ben

Başvuru

B. N. Yeltsin'in imzası 10 Kasım 1988. Ay, Romen rakamlarıyla gösterilir.

Rusça'da Romen rakamları aşağıdaki durumlarda kullanılır:

  • Yüzyıl veya binyıl numarası: XIX yüzyıl, II binyıl M.Ö. e.
  • Hükümdarın seri numarası: Charles V, Catherine II.
  • Çok ciltli bir kitaptaki cilt numarası (bazen kitabın bölümlerinin, bölümlerinin veya bölümlerinin numaraları).
  • Bazı yayınlarda, önsöz değiştirildiğinde ana metin içindeki bağlantıların düzeltilmemesi için kitabın önsözünü içeren sayfa sayıları.
  • Saat kadranlarında antika tarzı işaretler.
  • Diğer önemli olaylar veya liste öğeleri, örneğin: Öklid'in V varsayımı, II. Dünya Savaşı, CPSU XX Kongresi, XXII Olimpiyat Oyunları vb.
  • Kimyasal elementlerin değerliliği.
  • Terazideki adımın seri numarası.

Yılın ayını belirtmek için tarihi belirtirken SSCB'de Roma rakamları yaygın olarak kullanılıyordu: 11/III-85 veya 9.XI.89. Mezar taşlarında yaşam ve ölüm tarihlerini belirtmek için genellikle yılın ayının da Roma rakamlarıyla gösterildiği özel bir format kullanıldı. Bilginin bilgisayarla işlenmesine geçişle birlikte, Romen rakamlarına dayanan tarih formatları neredeyse kullanım dışı kaldı.

Diğer dillerde Romen rakamlarının uygulama kapsamı belirli özelliklere sahip olabilir; örneğin Batı ülkelerinde yıl sayısı bazen Romen rakamlarıyla yazılır.

Sayıları grafiksel olarak parçalara ayırırsak aşağıdakileri elde ederiz:

BEN BEN V BEN BEN X BEN BEN V BEN BEN X BEN BEN V BEN BEN X BEN BEN V BEN BEN X BEN BEN V BEN BEN L BEN BEN V BEN BEN X
1 BEN
2 BEN
3 BEN BEN
4 BEN V
5 V
6 V BEN
7 V BEN
8 V BEN BEN
9 BEN X
10 X
11 X BEN
12 X BEN
13 X BEN BEN
14 X BEN V
15 X V
16 X V BEN
17 X V BEN
18 X V BEN BEN
19 X BEN X
20 X X
21 X X BEN
22 X X BEN
23 X X BEN BEN
24 X X BEN V
25 X X V
26 X X V BEN
27 X X V BEN
28 X X V BEN BEN
29 X X BEN X
30 X X X
31 X X X BEN
32 X X X BEN
33 X X X BEN BEN
34 X X X BEN V
35 X X X V
36 X X X V BEN
37 X X X V BEN
38 X X X V BEN BEN
39 X X X BEN X
40 X L
41 X L BEN
42 X L BEN
43 X L BEN BEN
44 X L BEN V
45 X L V
46 X L V BEN
47 X L V BEN
48 X L V BEN BEN
49 X L BEN X
50 L vb. MMMCMXCIX (3999)'a kadar

Unicode

Unicode standardı, Roma rakamlarını temsil etmek için normal Latin harflerinin kullanılmasını önerir. Ancak standart, Roma rakamları için özel karakterleri de içermektedir. Sayı formları(İngilizce) Sayı Formları) U+2160 ila U+2188 kodlu karakterler alanında. Örneğin, MCMLXXXVIII, ⅯⅭⅯⅬⅩⅩⅩⅧ biçiminde temsil edilebilir. Bu aralık, öncelikle endüstri standartlarındaki Doğu Asya karakter kümeleriyle uyumluluk için 8 (Ⅷ veya VIII) gibi bileşik sayılar için kombinasyon glifleri de dahil olmak üzere 1 (Ⅰ veya I) ila 12 (Ⅻ veya XII) arasındaki hem küçük hem de büyük harfleri içerir. bu karakterlerin tanımlandığı JIS X 0213 olarak. Kombinasyon glifleri, daha önce tek tek karakterlerden oluşan sayıları temsil etmek için kullanılır (örneğin, Ⅹ ve Ⅱ olarak temsil edilmesi yerine Ⅻ). Buna ek olarak, 1000, 5000, 10.000'in arkaik biçimleri için glifler mevcuttur; majör ters C (Ɔ), 6'nın geç biçimi (ↅ, Yunan damgasına benzer: Ϛ), 50'nin erken biçimi (ↆ, aşağıyı gösteren oka benzer (Şablon:Vmvauyairufctr5ke4fuiUnicode), 50.000 ve 100.000 Küçük küçük c, ↄ'nin Romen rakamı sembollerine dahil edilmediğine, ancak büyük Claudian harfi Ↄ olarak Unicode standardına dahil edildiğine dikkat edilmelidir. .

Unicode Kodunda Roma Rakamları 0 1 2 3 4 5 6 7 8 9 A B C D E F Değeri 1 2 3 4 5 6 7 8 9 10 11 12 50 100 500 1 000 U+2160 U+2170 Değer 1 000 5 000 10 000 - - 6 50 50 000 100 000 U+2160! U+2180

Bu karakterlerin tümünün görüntülenmesi, Unicode standardını destekleyen bir yazılım ve bu karakterlere karşılık gelen glifleri içeren bir yazı tipi gerektirir.

Düzenli ifadeler

Roma rakamlarını kontrol etmek için kullanılan normal ifade şöyledir: "^(?i)M(0,3)(D?C(0,3)|C)(L?X(0,3)|X)(V?I(0) , 3)|I)$". Perl'de, Roman'ı bulmak için "m/((?i)M(0,3)(D?C(0,3)|C)(L?X(0,3)|X) normal ifadesini kullanabilirsiniz. bir dizedeki sayılar )(I|V?I(0,3)))/g".

Dönüştürmek

Arap rakamlarıyla yazılan sayıları Romen rakamlarına dönüştürmek için özel işlevler kullanılır. Örneğin, Microsoft Excel'in Rusça sürümünde bunun için bir işlev vardır. ROMA(argüman), içinde ingilizce versiyon Microsoft Excel ve OpenOffice.org Calc'ın herhangi bir sürümünde bu işlev çağrılır ROMA(argüman).

JavaScript'te dönüştürme işlevleri var arab = ; var roman = ["I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", CM ","M"]; function arabToRoman(sayı) ( if(!sayı) return ""; var ret = ""; var i = arab.length - 1; while(sayı > 0) ( if(sayı >= arab[i]) ( ret + = roman[i]; sayı -= arab[i]; ) else ( i--; ) ) return ret; function romanToArab(str) ( str = str.toUpperCase(); var ret = 0; var i = arab . uzunluk - 1; var konum = 0 while(i >= 0 && konum< str.length) { if(str.substr(pos, roman[i].length) == roman[i]) { ret += arab[i]; pos += roman[i].length; } else { i--; } } return ret; } Аналогичные функции на Си (C89): #include const int arabar = { 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000}; const char *romanar = { "I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"}; char *arab2roman(unsigned short int arab) { static char roman; const int m = sizeof(arabar)/sizeof(int)-1, arabmax=arabar[m]; const char romanmax=romanar[m]; int i, n; if(!arab) { *roman=0; return roman; } i=0; while(arab>arabmax) ( roman = romanmax; arap -= arabmax; ) n=m; while(arab > 0) ( if(arab >= arabar[n]) ( roman = romanar[n]; if(n&1) roman = romanar[n]; arab -= arabar[n]; ) else n--; ) roman[i]=0; romana dönüş; ) unsigned short int roman2arab(char *roman) ( const int m = sizeof(arabar)/sizeof(int)-1; unsigned short int arab; int len, n, i, pir; len=strlen(roman); arab= 0; n=m; while(n >= 0 && i< len) { pir=n&1; if(roman[i] == romanar[n] && (!pir || roman == romanar[n])) { arab += arabar[n]; i += 1+pir; } else n--; } return arab; } Программа перевода арабских цифр в римские и наоборот type str2 = string; const Rims: array of str2 = ("M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"," "); Arab: array of integer = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1, 0); var N, NI, I, J: integer; S: string; function Arab2Rim(N: integer) : string; var S: string; I: integer; begin S:= ""; I:=1; while N >0 başlarken Arab[I]"" başlarken Jantlar[I] = Kopya(S, 1, Uzunluk(Jant[I])) başlar S:= Kopyala(S, 1+Uzunluk(Jantlar[I]) , 255); N:= N + Arap[I] sonu; I:=I+1 son; Jant2Arab:= N ucu; begin WriteLn("Arapçadan Romen rakamlarına çeviri. 1999 B_SA"); ( Write("Dönüştürülecek sayıyı girin:"); ReadLn(N);) NI için:= 26 - 46 do WriteLn(NI," = ",Arab2Rim(NI)," ters ", Rim2Arab(Arab2Rim(NI) ) ); son. Pascal'da Arap sayısını Roma sayısına dönüştürme işlevi Arab2Roman(arab:integer):string; var i:tamsayı; d:tamsayı; arab_str:string; arab_len:tamsayı; başla Sonuç:= ""; arab_str:= IntToStr(arab); arab_len:= Uzunluk(arab_str); i:= 0'dan arab_len-1'e kadar do begin d:= StrToInt(String(arab_str)); if (d+1) mod 5 = 0 ardından Sonuç:= Kopyala("IXCM", 1+i, 1) + Kopyala("VXLCDM", i*2 + (d+1) div 5, 1) + Sonuç else Sonuç:= Kopyala("VLD", 1+i, d div 5) + Kopyala("IIIXXXCCCMMM", 1+i*3, d mod 5) + Sonuç; son; son;

Bu algoritmanın ayırt edici bir özelliği, dizileri kullanmamasıdır (tabii ki, bir dizgeyi bir karakter dizisi olarak düşünmediğiniz sürece).

BASIC'te Arap rakamını Roma rakamına dönüştürme fonksiyonu (en kısa kod) 10 INPUT "ARABIC NUMBER: "; А$ 20 I=0 İÇİN LEN(A$)-1 30 X=VAL(MID$(A$,LEN(A$)-I,1)) 40 IF X=4 VEYA X=9 SONRA B$= MID$("IXCM",I+1,1)+MID$("VXLCDM",I*2+(X+1)/5,1)+B$ 50 IF X4 AND X Arapça sayı dönüştürme fonksiyonu (bunda case 1999) XPath'ta Roman dilinde string-join((1999'daki $num için) return (("", "M", "MM", "MMM")[($num idiv 1000) mod 10+1], ( "", "", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM")[($num idiv 100) mod 10+1 ], ("", "X", "XX", "XXX", "XL", "L", "LX", "LXX", LXXX, "XC")[($num idiv 10) mod 10+1], ("""""""II""III""IV""V""VI"VII"VIII"IX")[$num mod 10 +1]), "") Perl'de Arap rakamını (bu durumda 1999) Roma rakamına dönüştürme işlevi use strict; uyarıları kullanın; benim $n = 1999; $num'larım = [ ["", qw(I II III IV V VI VII VIII IX) ], ["", qw(X XX XXX XL L LX LXX LXXX XC) ], ["", qw(C CC CCC) CD D DC DCC DCCC CM) ], ["", qw(M MM MMM) ] ]; benim $i = 0; benim @res = (); @res, ($nums->[$i++][ ($n % 10, $n = int($n / 10)) ]) için 0 .. 3'e basın; tersten yazdır @res; Java sınıfında ArabRome'da Arapça sayıyı (1'den 3999'a kadar) Roman'a dönüştürmek için sınıf ( Private int arabBase = (1000, 500, 100, 50, 10, 5, 1); Private String romeBase = ("M", "D" , "C", "L", "X", "V", "I"); public String ArabToRome(int arab) ( int result = 0; int kalan = 0; String resultRome = ""; for(short i = 0; i0 && result=4 && result CSharp'ta Roma rakamlarını Arapça ve geriye dönüştürmek için genişletme sınıfı /// /// Sınıf, Arap rakamlarını Roma rakamlarına ve geriye dönüştürmek için tasarlanmıştır /// /// // / Sınıf orijinal olarak 1'den 39999'a kadar Arap rakamlarını tanımlayabilen bir Roma rakamı alfabesi içerir. /// Aralığı genişletmeniz gerekiyorsa, /// BasicRomanNumbers alanını kullanarak Roma rakamları için ek gösterimler tanımlayabilirsiniz. public static class RomanNumber ( /// /// Temel Roma Alfabesi numaraları /// Alfabe bir sözlük şeklinde oluşturulmuştur. Sözlüğün anahtarı Arap rakamıdır (int), değer ise karşılık gelen /// Roma rakamıdır (string) ) /// /// /// Arap sayıları için Latin gösterimini içerir 1*,4* ,5*,9* - burada "*" 0...N sıfırı temsil eder /// Oluşturulduğunda, gösterimi içerir 1'den 10000'e kadar olan sayıların sayısı (I...ↂ) Romen rakamında bir karakter / // üç defadan fazla geçemeyeceğinden, başlangıçta 1'den 39999'a kadar olan sayıları isterseniz Romen biçimine /// dönüştürebilirsiniz. Çok sayıda Roma rakamıyla çalışabilmek için, 1*,4*,5*,9* elemanlarını atlamadan /// 40000'den başlayarak listeye ek notasyonlar eklemelisiniz. /// public static SortedList BasicRomanNumbers ( get; set; ) static RomanNumber() ( BasicRomanNumbers = new SortedList(17); BasicRomanNumbers.Add(1, "I"); BasicRomanNumbers.Add(4, "IV"); BasicRomanNumbers. Add(5, "V"); BasicRomanNumbers.Add(9, "IX"); BasicRomanNumbers.Add(10, "X"); BasicRomanNumbers.Add(50, "L"); "); "); Temel Romen Rakamları.Add(90, "XC"); Temel Romen Rakamları.Add(100, "C"); Temel Romen Rakamları.Add(400, "CD"); (500, "D"); Temel Romen Rakamları.Add (900, "CM"); BasicRomanNumbers.Add(1000, "M"); BasicRomanNumbers.Add(4000, "Mↁ"); ↁ"); BasicRomanNumbers.Add(9000, "Mↂ" ); BasicRomanNumbers.Add(10000, "ↂ" ) /// /// Geçerli Romen sayı alfabesi için mümkün olan maksimum Romen sayısını hesaplar. /// /// Mümkün olan maksimum Roma numarası public static uint MaximumRomanNumber() ( int lastNumber = BasicRomanNumbers.Keys.Last(); int numberWithoutZeros = int.Parse(lastNumber.ToString().Replace("0","\0) ")); int ön=0; switch (sayıSıfırsız) ( durum 1: ön = sonSayı * 4 - 1; ara; durum 4: durum 9: ön = sonNumber; mola; durum 5: ön = sonNumber + sonNumber / 5 * 3; break; varsayılan: break; ) return uint.Parse(preliminary.ToString().Replace("0", "9")); /// /// Bir tamsayıyı Roma rakamına dönüştürür /// / // Romen notasyonuna dönüştürülmesi gereken Arap sayısı /// "0"a eşit bir sayı /// veya maksimum Romen sayısından büyük bir sayı parametre olarak iletildiğinde oluşturulur. /// Bir Roma rakamını temsil eden bir dize public static string ArabicRoman(this int numberArab) ( StringBuilder numberRoman = new StringBuilder(); //"-" işaretini Arap sayısından hariç tutun ve eğer bunu Roma rakamının ilk karakteri yapın (sayıArap< 0) { числоРимское.Append("-"); числоАраб = -числоАраб; } if (числоАраб == 0) throw new ArgumentOutOfRangeException("числоАраб", числоАраб, "Недопустимое значение аргумента: римские числа не могут быть равными\"0\""); else if (числоАраб >MaximumRomanNumber()) throw new ArgumentOutOfRangeException("numberArab", numberArab, string.Format("Geçersiz argüman değeri: (0)'dan büyük bir Romen rakamı belirtmek mümkün değildir", MaximumRomanNumber())); //Arap sayısını kendisini oluşturan Romen sayılarına ayrıştırıyoruz ve bunları tek bir satırda birleştiriyoruz. Temel Roma Sayıları = 'dan itibaren'ye kadar Temel Roma Sayıları'nda. Anahtarlar nerede to = 1) ( Arap sayısı -= güncel; Roma numarası. Ekle (Temel Roma Sayıları) Roma Sayıları [geçerli]); ) ) Roma sayısını döndürür .ToString(); ) /// /// Romen rakamını Arap rakamına dönüştürür /// /// int'ye dönüştürülecek Romen rakamı /// Romen olmayan bir sayı parametre olarak iletildiğinde oluşturulur /// Bir tamsayı Arapça gösterimi temsil eder Roma numarası public static int Roman Arapça(bu dize Roma numarası) ( int Arap numarası = 0; sbyte negatif = 1; string Roma = Roma numarası.Trim(); if (Roman == "-") ( negatif = -1; Roman = Roman.Substring(1); StringBuilder RomanNumber şablonu = new StringBuilder(); foreach (int to in BasicRomanNumbers.Keys.IndexOf(k); string quantifier="? "; if (index == 0 | | (index % 4) == 0) quantifier="(0,3)"; şablonRomanNumber.Insert(0, string.Format("(?((1))(2) )?", to.ToString() , BasicRomanNumbers[k], quantifier)) //Büyük/küçük harf dikkate alınmaz + eşleşme RomanNumber şablonu dizesinin başlangıcında başlamalıdır.Insert(0, "(?i)^"); //Eşleşme RomanNumber dizisinin sonunda bulunmalıdır şablon.Append(" $"); //Basitleştirilmiş kontrol. IVII if (!Regex.IsMatch(Roman, RomanNumber model.ToString())) throw new FormatException(string.Format("Text \"(0)\" is not a Romen rakamı", numberRoman) gibi hataları kontrol etmez ); Eşleşme numarası = Regex.Match(Roman, şablonRomanNumber.ToString()); foreach (int to in BasicRomanNumbers.Keys) ( numberArab += number.Groups[to.ToString()].Length / BasicRomanNumbers[to].Length * to; ) return numberArab * negatif; ))

Notlar

  1. Unicode Standardı, 15.3
  2. 1 2 Unicode Sayı Formları
  3. Perry, David J. UCS'ye Ek Antik Roma Karakterleri Ekleme Önerisi.
  4. İlk iki satır için
  5. "Bilim ve Yaşam" N12 1986 sayfa 95, V. Ptitsyn, Moskova
  6. Yazar - Kuznetsov Evgeny A.
  7. Yazar - Kuznetsov Evgeny A., 1992

Ayrıca bakınız

  • Antik Roma para ve ağırlık birimlerinin sembolleri
Teknik not: Teknik sınırlamalar nedeniyle bazı tarayıcılar bu makalede kullanılan özel karakterleri görüntülemeyebilir. Bu tür karakterler, web tarayıcınıza bağlı olarak kutu, soru işareti veya diğer anlamsız karakterler olarak görünebilir. işletim sistemi ve bir dizi yüklü yazı tipi. Tarayıcınız UTF-8'i yorumlayabiliyor olsa ve çok çeşitli Unicode'u destekleyen bir yazı tipi yüklemiş olsanız bile; Kod2000, Arial Unicode MS, Lucida Sans Unicode veya ücretsiz Unicode yazı tiplerinden biri - bu alandaki tarayıcı özellikleri genellikle farklılık gösterdiğinden farklı bir tarayıcı kullanmanız gerekebilir. Kategoriler:
  • Sayılar
  • Sayı sistemleri

Roma harfleri L CDM M ne anlama geliyor?

Bunlar rakamlar! -Latin harflerinin kullanımına dayanan Roma numaralandırma sisteminde, bu konuda daha uygun bir ondalık sayı sistemi ile değiştirilmesinin zorlayıcı nedenlerinden biri haline geldi
Bu harfler artan sırayla şu tam sayıları temsil eder: I - bir, V - beş, X - on, L - elli, C - yüz, D - beş yüz, M - bin.
Roma rakamları
Harflerin kullanıldığı Roma numaralandırma sistemi iki bin yıldır Avrupa'da yaygındı. Ancak Orta Çağ'ın sonlarında bunun yerini Araplardan alınan daha uygun bir ondalık sayı sistemi aldı. Ancak günümüze kadar Roma rakamları anıtların üzerindeki tarihleri, saatlerin üzerindeki zamanı ve (Anglo-Amerikan tipografi geleneğinde) kitap önsözlerinin sayfalarını belirtmek için kullanılıyor. Ek olarak, Rusça'da sıra sayılarını belirtmek için Romen rakamlarını kullanmak gelenekseldir.
Sayıları belirtmek için Latin alfabesinin 7 harfi kullanıldı: I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000. Ara sayılara birkaç harf eklenerek oluşturuldu. sağ veya sol. Önce binler ve yüzler, sonra onlar ve birlikler yazıldı. Böylece 24 sayısı XXIV olarak tasvir edilmiştir. Sembolün üzerindeki yatay çizgi bin ile çarpma anlamına geliyordu.
Doğal sayılar bu sayıların tekrarlanmasıyla yazılır. Ayrıca, daha büyük bir sayı, daha küçük bir sayının önündeyse toplanır (toplama ilkesi), ancak daha küçük bir sayı, daha büyük bir sayının önündeyse, daha küçük olan, daha büyük olandan çıkarılır (toplama ilkesi). çıkarma ilkesi). Son kural yalnızca aynı sayının dört kez tekrarlanmasını önlemek için geçerlidir. Örneğin I, X, C sırasıyla 9, 90, 900'ü belirtmek için X, C, M'nin önüne veya 4, 40, 400'ü belirtmek için V, L, D'nin önüne yerleştirilir. Örneğin, VI = 5+1 = 6, IV = 5 - 1 = 4 (IIII yerine). XIX = 10 + 10 - 1 = 19 (XVIIII yerine), XL = 50 - 10 =40 (XXXX yerine), XXXIII = 10 + 10 + 10 + 1 + 1 + 1 = 33, vb.
Bu gösterimde çok basamaklı sayılar üzerinde aritmetik işlemler yapmak oldukça sakıncalıdır. Roma rakamı sistemi, bazı durumlarda MS yüzyılları (XV. Yüzyıl vb.) Belirtmek dışında şu anda kullanılmamaktadır. e. (MCMLXXVII, vb.) ve aylar belirtilirken tarihler (örneğin, 1. V. 1975), sıra sayıları ve bazen üçten büyük küçük derecelerin türevleri: yIV, yV, vb.
Romen rakamları nasıl yazılır? -//elhow.ru/ucheba/matematika/kak-pishutsja-rimskie-cifry
.437000.ru/info/rim.php
__________________________
Latin alfabesi MÖ 7. yüzyılda izole hale geldi. e. ve başlangıçta yalnızca 21 harf içeriyordu: A, B, C, D, E, F, Z, H, I, K, L, M, N, O, P, Q, R, S, T, V ve X.
http://ladyretryka.ru/?p=10980

Romen rakamı M hangi sayıyı temsil eder?

Roma rakamı M hangi sayıyı temsil eder?

Alsou - sh

Benzer bir soruyu zaten yanıtladım (buraya bakın). Buna da kısaca cevap vermek isterim.

Kendimi biraz tekrarlayacağım.

Romen rakamlarını ve bunlardan yalnızca 7 tanesini hatırlamak zor değil. Bu sayıların azalan sırayla harf tanımları şunlardır: M, D, C, L, X, V, I:

Gördüğümüz gibi, Büyük M harfi olan Romen rakamı 1000 sayısını temsil eder.

Şimdi Romen rakamlarıyla yazılan sayılara örnekler veriyoruz:

Şimdi kendimiz yazalım:

Bu yılın sayısı 2015 örneğin şu şekilde yazılır: MMXV

1941 - MSMXXXXI

1945 - MSMXXXXV

2987 - MMCMLXXXVII

2001 - MMI

Zolotynka

Eğer Roma rakamı M tek başına duruyorsa değeri 1000 olacaktır.

Ancak: eğer M'den önce daha küçük bir sayı geliyorsa, örneğin bu örnekte CM, o zaman bu şu anlama gelecektir: 1000-100=900.

M'den sonra C gelirse toplamanız gerekir, dolayısıyla değer 1000+100=1010 olur.

Hatırladığımız gibi C yüz anlamına gelir.

Genel kurallar: Çıkarma yapmak için büyük bir sayının önüne birden fazla küçük sayı koyamazsınız. Yani IIV, 3 anlamına gelmiyor.

Ayrıca onlarca, yüzler ve binler ayrı öğeler olarak ayrılmalıdır (küçük sayı, büyük sayıdan 10 kattan fazla farklılık gösteremez). Bu, 99'un XCIX, 90 + 9 olduğu ancak hiçbir zaman IC olarak yazılamadığı anlamına gelir. Benzer şekilde, 999 IM olamaz ve 1999 MIM olamaz vb.

Nataşa

Arap rakamlarını kullanmaya alışığız. Ancak neredeyse iki buçuk bin yıllık Romalı olanlar hala var ve yaygın olarak kullanılıyor. Romen rakamları harflerle temsil edilir. Bu tür harflerden yalnızca yedi tanesi vardır: I, V, X, L, C, D, M. Bunların özel düzenlemesi bir sayıyı belirtir. Bu sayılar diğerlerinden ayrı olarak yerleştirilirse şu anlamlara gelir: I - 1, V - 5, X - 10, L - 50, C - 100, D - 500, M - 1000.

Güzel açık alan

Roma rakamı M (aynı zamanda bir harf) sayı anlamına gelir 1000 .

Roma hesabında sayıları yazmak için çok az harf kullanılır; bunlardan yalnızca 7 tanesi vardır, ancak Roma harfleriyle büyük sayılar yazmak için bir sayıyı diğerinden toplamanız ve çıkarmanız gerekir, bu da pratik yapmadan o kadar kolay değildir.

Arapçada sayıları temsil etmek için 10 karakter kullanılır ve herhangi bir sayıyı matematiksel işlemlere gerek kalmadan yazmak için kullanılabilirler.

Roma rakamlarında Latin harfi M, Latin mille'den gelen "bin" anlamına gelir...

Ve şimdi bu önek yaygın olarak kullanılıyor, örneğin ppm - kelimenin tam anlamıyla "binden" ve "milyon" kelimesi de oradan geldi, kelimenin tam anlamıyla "büyük bin", "bin" olarak tercüme edildi ve bu kelimenin nasıl olduğu ilginç ortaya çıktı, ama bu başka bir hikaye ..

Afanasy44

Romen rakamları artık nadiren kullanılıyor; bunların yerini daha kullanışlı Arapça rakamlar aldı. Çoğunlukla yüzyılları, örneğin 5. yüzyılı, 12. yüzyılı ve nadir durumlarda adlandırmak için kullanılırlar.

Romalılar bini belirtmek için M harfini kullandılar. Yan yana iki MM harfi iki bin, MMM üç bin anlamına geliyor ve o zaman daha da zor ve daha eğlenceli oluyor.

Moreljuba

Roma rakamı M elbette bize bir harf olarak tanıdık geliyor, ancak Roma rakamı sisteminde hala bir sayıdır. Yani tam olarak bin anlamına geliyor. ve bu Roma rakamı Latince mille kelimesinden gelmektedir.

Lyudmila 1986

Eski Romalılar sayıları temsil etmek için Latin alfabesinin harflerini kullandılar. Roma rakamları MÖ 500 civarında ortaya çıktı.

Birçok dilde, Romen rakamları yüzyılın sayısını (milenyum) kaydetmek, kadranları işaretlemek, matematiksel analizde ve önemli olayları kaydetmek için kullanılır.

Arı Zhuzha

Roman L, C, D, M diğerleri kadar yaygın değildir, M 1000 sayısını, MM 2000'i, MMM ise 3000 sayısını ifade eder.

Örneğin, 2017 yılı Romen rakamlarıyla MMXVII, 2018 yılı ise Romen rakamları MMXVIII ile gösterilecektir.

Konumsal , , , , , , , , , , Nega-konumsal Simetrik Karma sistemler Fibonacci Konumsal olmayan Birim (tekli)

Roma rakamları

1 BEN enlem. biz, hepimiz
5 V enlem. beşlik
10 X enlem. aralık
50 L enlem. beşlik
100 C enlem. yüzde
500 D enlem. beşli
1000 M enlem. mil

Rus dilinde, sayıların harf tanımlarını azalan sırayla hafızaya sabitlemek için anımsatıcı kurallar vardır:

M S D arim İLE yüz yüze L simgeler, X vatit V Yedi BEN X.

M S D yeriz C ipuçları L Bakmak X Tamam V iyi huylu BEN bireylere

Sırasıyla M, D, C, L, X, V, ben

Sayı Tanım
1 BEN
2 II
3 III
4 IV, 19. yüzyıla kadar - III
5 V
6 VI
7 VII
8 VIII (bazen - IIX)
9 IX (bazen VIII)
10 X
20 XX
30 XXX
40 XL
50 L
60 LX
70 LXX
80 LXXX
90 XC
100 C
200 CC
300 CCC
400 CD
500 D; ben
600 DC; I°C
700 DCC; I°CC
800 DCCC; IↆCCC
900 SANTİMETRE; CCİ°
1 000 M; ↀ; CI°
2 000 MM; CI°CI°
3 000 MMM; CI°CI°CI°
3 999 MMMCMXCIX
4 000 MV; ↀↁ; CI°I°
5 000 V; ↁ; Ben
6 000 VM; ↁↀ; I°°CI°
7 000 VMM; ↁↀↀ; I°°CI°CI°
8 000 V MMM; ↁↀↀↀ; I°°CI°CI°CI°
9 000 IX; ↀↂ; CI°CCI°
10 000 X ; ↂ; CCI°
20 000 XX; ↂↂ; CCI°CCI°
30 000 XXX; ↂↂↂ; CCI°°CCI°°CCI°°
40 000 XL; ↂↇ; CCI°°I°°°
50 000 L; ↇ; Ben
60 000 LX; ↇↂ; I°°°°CCI°
70 000 LXX; ↇↂↂ; I°°°°CCI°°CCI°°
80 000 LXXX; ↇↂↂↂ; I°°°°CCI°°CCI°°CCI°
90 000 XC; ↂↈ; CCI°°CCCI°°°
100 000 C; ↈ; CCCI°
200 000 CC; ↈↈ; CCCI°°°CCCI°°°°
300 000 CCC; ↈↈↈ; CCCI°°°°CCCI°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
400 000 CD; CCCI°°°°°°°°°
500 000 D ; I°°°°°°
600 000 DC; I°°°°°CCCI°°°
700 000 DCC; I°°°°°°CCCI°°°°CCCI°°°°
800 000 DCCC; I°°°°°CCCI°°°°CCCI°°°°CCCI°°°
900 000 SANTİMETRE; CI; CCCI°°°°CCCCI°°°°°°
1 000 000 M ; BEN ; CCCCI°

Büyük sayıları Romen rakamlarıyla doğru yazmak için önce binleri, sonra yüzleri, sonra onlukları ve son olarak da birimleri yazmanız gerekir.

Bu durumda bazı rakamlar (I, X, C, M) tekrarlanabilir ancak art arda en fazla üç kez; dolayısıyla herhangi bir tam sayıyı yazmak için kullanılabilirler en fazla 3999(MMMCCMXCIX). İlk dönemlerde daha büyük sayıları gösteren işaretler vardı - 5000, 10.000, 50.000 ve 100.000 (bu durumda söz konusu kurala göre maksimum sayı 399.999'dur). Romen rakamı sisteminde sayıları yazarken, küçük rakam büyük rakamın sağında görünebilir; bu durumda ona eklenir. Örneğin Latin alfabesinde 283 sayısı CCLXXXIII yani 100+100+50+30+3=283 şeklinde yazılır. Burada yüzü temsil eden rakam iki kez, on ve biri temsil eden rakamlar ise üç kez tekrarlanıyor.

Örnek: sayı 1988. Bin M, dokuz yüz CM, sekiz onluk LXXX, sekiz birim VIII. Bunları birlikte yazalım: MCMLXXXVIII.

Çoğu zaman metindeki sayıları vurgulamak için üzerlerine bir çizgi çizilirdi: LXIV. Bazen hem üstüne hem de altına bir çizgi çizilirdi: XXXII- özellikle, Rusça el yazısı metinlerde Romen rakamlarını vurgulamak gelenekseldir (bu, teknik karmaşıklık nedeniyle dizgide kullanılmaz). Diğer yazarlar için üst çizgi, rakamın değerinde 1000 kat artış olduğunu gösterebilir: V = 5000.

“Dört” rakamı ancak 19. yüzyılda “IV” olarak yazılıyordu; ondan önce ise en sık “III” rakamı kullanılıyordu. Ancak “IV” girişi, 1390 yılına dayanan “Forme of Cury” el yazmasının belgelerinde zaten mevcuttur. Saat kadranlarında çoğu durumda, esas olarak estetik nedenlerden dolayı geleneksel olarak "IV" yerine "IIII" kullanılmıştır: bu yazım, karşı taraftaki "VIII" rakamlarıyla görsel simetri sağlar ve ters "IV" harfinin okunması, "IV" rakamına göre daha zordur. "III". Kadran üzerinde IV yazılmayan bir versiyonu da vardır çünkü IV, tanrı Jüpiter'in adının ilk harfleridir (IVPITER).

Küçük olan sayı büyüğün soluna yazılabilir, sonra büyük olandan çıkarılmalıdır. Bu durumda, yalnızca 1'i gösteren sayılar veya 10'un kuvvetleri çıkarılabilir ve sayı serisinde yalnızca çıkana en yakın iki rakam (yani çıkanın 5 veya 10 ile çarpılması) eksilen olarak kullanılabilir. Daha küçük bir sayının tekrarına izin verilmez. Böylece var yalnızca altı seçenek“çıkarma kuralını” kullanarak:

  • IV = 4
  • IX = 9
  • XL=40
  • XC = 90
  • CD = 400
  • CM = 900

Örneğin, 94 sayısı XCIV = 100 − 10 + 5 − 1 = 94 olacaktır - sözde “çıkarma kuralı” (geç antik çağda ortaya çıktı ve bundan önce Romalılar 4 sayısını IIII ve 40 sayısını yazıyordu). XXXX olarak).

Diğer “çıkarma” yöntemlerinin kabul edilemez olduğu unutulmamalıdır; bu nedenle 99 sayısı IC olarak değil XCIX olarak yazılmalıdır. Ancak günümüzde, bazı durumlarda Romen rakamlarının basitleştirilmiş bir gösterimi de kullanılmaktadır: örneğin, Microsoft Excel'de, Arap rakamlarını “ROMAN()” işlevini kullanarak Roma rakamına dönüştürürken, sayıların çeşitli gösterim türlerini kullanabilirsiniz, klasikten son derece basitleştirilmişe kadar (örneğin 499 sayısı CDXCIX, LDVLIV, XDIX, VDIV veya ID olarak yazılabilir). Basitleştirme, bir rakamı azaltmak için soluna başka herhangi bir rakamın yazılabilmesidir:

  • 999. Bin (M), 1 (I) çıkarın, CMXCIX yerine 999 (IM) elde ederiz. Sonuç: 1999 - MCMXCIX yerine MIM
  • 95. Yüz (C), 5 (V) çıkarın, XCV yerine 95 (VC) elde edin
  • 1950: Bin (M), 50 (L) çıkarın, 950 (LM) elde edin. Sonuç: 1950 - MCML yerine MLM

Büyük sayılar Romen rakamları kullanılarak da yazılabilir. Bunun için binleri ifade eden sayıların üzerine çizgi, milyonları ifade eden sayıların üzerine ise çift çizgi konur. Örneğin, 123123 sayısı şu şekilde görünecektir:

CXXIII CXXIII

Ve bir milyon da benim gibidir, ama başında bir değil iki özellik vardır: Ben

Başvuru

Düzenli ifadeler

Roma rakamlarını kontrol etmek için kullanılan normal ifade şöyledir: ^(M(0,3))(D?C(0,3)|C)(L?X(0,3)|X)(V?I(0,3) | I)$ Perl'de, bulmak için m/\b((?:M(0,3)?(?:D?C(0,3)|C)?(?:L) normal ifadesini kullanabilirsiniz. Bir dizedeki Romen rakamları ?X(0,3)|X)?(?:I(0,3)?V?I(0,3)|I)))\b/gs .

Dönüştürmek

Arap rakamlarıyla yazılan sayıları Romen rakamlarına dönüştürmek için özel işlevler kullanılır. Örneğin, Microsoft Excel'in Rusça sürümünde bunun için bir işlev vardır. ROMA(argüman), Microsoft Excel'in İngilizce sürümünde ve OpenOffice.org Calc'ın herhangi bir sürümünde bu işlev çağrılır. ROMA(argüman).

JavaScript'te Dönüştürme İşlevleri

var arap = ; var roman = ["I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", CM ","M"]; function arabToRoman(sayı) ( if(!sayı) return ""; var ret = ""; var i = arab.length - 1; while(sayı > 0) ( if(sayı >= arab[i]) ( ret + = roman[i]; sayı -= arab[i]; ) else ( i--; ) ) return ret; function romanToArab(str) ( str = str.toUpperCase(); var ret = 0; var i = arab . uzunluk - 1; var konum = 0 while(i >= 0 && konum< str.length) { if(str.substr(pos, roman[i].length) == roman[i]) { ret += arab[i]; pos += roman[i].length; } else { i--; } } return ret; }

C'deki (C89) benzer işlevler:

#katmak const int arabar = ( 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000); const char *romanar = ("I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"); char *arab2roman(unsigned short int arab) ( static char roman; const int m = sizeof(arabar)/sizeof(int)-1, arabmax=arabar[m]; const char romanmax=romanar[m]; int i, n ; if(!arab) ( *roman=0; return roman; ) i=0; while(arab>arabmax) ( roman = romanmax; arab -= arabmax; ) n=m; while(arab > 0) ( if( arab >= arabar[n]) ( roman = romanar[n]; if(n&1) roman = romanar[n]; arab -= arabar[n]; ) else n--; return roman; unsigned short int roman2arab( char *roman) ( const int m = sizeof(arabar)/sizeof(int)-1; unsigned short int arab; int len, n, i, pir; len=strlen(roman); arab=0; i=0; while(n >= 0 && i< len) { pir=n&1; if(roman[i] == romanar[n] && (!pir || roman == romanar[n])) { arab += arabar[n]; i += 1+pir; } else n--; } return arab; }

str2 yazın = dize; const Jantlar: str2 dizisi = ("M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", V ","IV", "I", "); Arap: tamsayı dizisi = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1, 0); var N, NI, I, J: tamsayı; S:dize; function Arab2Rim(N: integer) : string; var S: dize; ben: tamsayı; S'yi başlat:= ""; ben:=1; N > 0 başlarken Arab[I]<=N do begin S:= S + Rims[I]; N:= N - Arab[I] end; I:=I+1 end; Arab2Rim:= S end; function Rim2Arab (S:string) : integer; var I, N: integer; begin I:=1; N:= 0; while S<>"" başlarken Jantlar[I] = Kopyala(S, 1, Uzunluk(Jantlar[I])) başlar S:= Kopyala(S, 1+Uzunluk(Jantlar[I]), 255); N:= N + Arap[I] sonu; I:=I+1 son; Jant2Arab:= N ucu; begin WriteLn("Arapçadan Romen rakamlarına çeviri. 1999 B_SA"); ( Write("Dönüştürülecek sayıyı girin:"); ReadLn(N);) NI için:= 26 - 46 do WriteLn(NI," = ",Arab2Rim(NI)," ters ", Rim2Arab(Arab2Rim(NI) ) ); son.

function Arab2Roman(arab:integer):string; var i:tamsayı; d:tamsayı; arab_str:string; arab_len:tamsayı; başla Sonuç:= ""; arab_str:= IntToStr(arab); arab_len:= Uzunluk(arab_str); i:= 0'dan arab_len-1'e kadar do begin d:= StrToInt(String(arab_str)); if (d+1) mod 5 = 0 ardından Sonuç:= Kopyala("IXCM", 1+i, 1) + Kopyala("VXLCDM", i*2 + (d+1) div 5, 1) + Sonuç else Sonuç:= Kopyala("VLD", 1+i, d div 5) + Kopyala("IIIXXXCCCMMM", 1+i*3, (d mod 5)/2) + Sonuç; son; son;

Bu algoritmanın ayırt edici bir özelliği, dizileri kullanmamasıdır (tabii ki, bir dizgeyi bir karakter dizisi olarak düşünmediğiniz sürece).

10 GİRİŞ "ARAP NUMARASI:"; А$ 20 I=0 İÇİN LEN(A$)-1 30 X=VAL(MID$(A$,LEN(A$)-I,1)) 40 IF X=4 VEYA X=9 SONRA B$= MID$("IXCM",I+1,1)+MID$("VXLCDM",I*2+(X+1)/5,1)+B$ 50 IF X<4 THEN B$=MID$("IIIXXXCCCMMM",1+I*3,X)+B$ ELSE IF X>4 VE X<9 THEN B$=MID$("VLD",I+1,1)+MID$("IIIXXXCCCMMM",1+I*3,X-5)+B$ 60 NEXT I 70 PRINT "РИМСКОЕ ЧИСЛО: "; B$

string-join(for $num in (1999) return (("", "M", "MM", "MMM")[($num idiv 1000) mod 10+1], ("", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM")[($num idiv 100) mod 10+1], ("", X,XX,XXX,XL,L,LX,LXX,LXXX,XC")[($num idiv 10) mod 10+1], (" ``I``II``III``IV``V``VI`VII`VII`VIII`IX")[$num mod 10+1]), "" )

katı kullanın; uyarıları kullanın; benim $n = 1999; $num'larım = [ ["", qw(I II III IV V VI VII VIII IX) ], ["", qw(X XX XXX XL L LX LXX LXXX XC) ], ["", qw(C CC CCC) CD D DC DCC DCCC CM) ], ["", qw(M MM MMM) ] ]; benim $i = 0; benim @res = (); @res, ($nums->[$i++][ ($n % 10, $n = int($n / 10)) ]) için 0 .. 3'e basın; tersten yazdır @res;

java.util.*'i içe aktarın; public class IntegerConverter ( public static String intToRoman(int number) ( if (number >= 4000 || sayı<= 0) return null; StringBuilder result = new StringBuilder(); Iteratoryineleyici = üniteler.descendingKeySet().iterator(); while (iterator.hasNext()) ( Tamsayı anahtarı = iterator.next(); while (sayı >= anahtar) ( sayı -= anahtar; result.append(units.get(anahtar)); ) ) return result.toString( ); ) özel statik final NavigableMap birimler; static(Gezinilebilir Harita initMap = yeni Ağaç Haritası (); initMap.put(1000, "M"); initMap.put(900, "CM"); initMap.put(500, "D"); initMap.put(400, "CD"); initMap.put(100, "C"); initMap.put(90, "XC"); initMap.put(50, "L"); initMap.put(40, "XL"); initMap.put(10, "X"); initMap.put(9, "IX"); initMap.put(5, "V"); initMap.put(4, "IV"); initMap.put(1, "I"); birimler = Collections.unmodifiableNavigableMap(initMap); ))

///

/// Sınıf, Arap rakamlarını Romen rakamlarına ve tam tersini dönüştürmek için tasarlanmıştır /// /// /// Sınıf başlangıçta 1'den 39999'a kadar Arap rakamlarını tanımlayabilen Roma rakamlarından oluşan bir alfabe içerir. /// Aralığı genişletmeniz gerekiyorsa, /// alanını kullanarak Romen rakamları için ek gösterimler tanımlayabilirsiniz. Temel Roma Numaraları genel statik sınıf RomanNumber ( /// /// Temel Roma rakamlarının alfabesi /// Alfabe bir sözlük şeklinde oluşturulmuştur. Sözlük anahtarı bir Arap rakamıdır (int), değer ise buna karşılık gelen /// Roma rakamıdır (string) /// /// /// 1*,4*,5*,9* Arap sayıları için Roma notasını içerir - burada "*" 0...N sıfırları temsil eder /// Oluşturulduğunda, 1'den 10000'e kadar olan sayıların gösterimini içerir (I...ↂ). Bir Roma rakamında bir sembol /// üç defadan fazla görünemeyeceğinden, başlangıçta 1'den 39999'a kadar olan sayıları dönüştürmek mümkündür. Roma formatı. /// Eğer çok sayıda Romen rakamıyla çalışabilmek istiyorsanız 1*,4*,5*,9* elemanlarını atlamadan /// 40000'den başlayarak listeye ek notasyonlar eklemelisiniz. /// genel statik Sıralama Listesi BasicRomanNumbers ( get; set; ) static RomanNumber() ( BasicRomanNumbers = new SortedList (17); BasicRomanNumbers.Add(1, "I"); BasicRomanNumbers.Add(4, "IV"); BasicRomanNumbers.Add(5, "V"); BasicRomanNumbers.Add(9, "IX"); BasicRomanNumbers.Add(10, "X"); BasicRomanNumbers.Add(40, "XL"); BasicRomanNumbers.Add(50, "L"); BasicRomanNumbers.Add(90, "XC"); BasicRomanNumbers.Add(100, "C"); BasicRomanNumbers.Add(400, "CD"); BasicRomanNumbers.Add(500, "D"); BasicRomanNumbers.Add(900, "CM"); BasicRomanNumbers.Add(1000, "M"); BasicRomanNumbers.Add(4000, "Mↁ"); BasicRomanNumbers.Add(5000, "ↁ"); BasicRomanNumbers.Add(9000, "Mↂ"); BasicRomanNumbers.Add(10000, "ↂ"); ) /// /// Geçerli Romen rakamı alfabesi için mümkün olan maksimum Romen rakamını hesaplar. /// /// Mümkün olan maksimum Romen rakamı public static uint MaximumRomanNumber() ( int lastNumber = BasicRomanNumbers.Keys.Last(); int numberWithoutZeros = int.Parse(lastNumber.ToString().Replace("0","\0")); int ön=0; switch (sayıSıfırsız) ( durum 1: ön = sonSayı * 4 - 1; ara; durum 4: durum 9: ön = sonNumber; ara; durum 5: ön = sonSayı + sonNumber / 5 * 3; ara; varsayılan: ara; ) dönüş uint.Parse(preliminary.ToString().Replace("0", "9")); ) /// /// Bir tamsayıyı Romen rakamına dönüştürür /// /// Arap rakamı Roma notasyonuna dönüştürülecek /// "0" /// değerine eşit bir sayı veya maksimum Romen rakamından büyük bir sayı parametre olarak iletildiğinde oluşturulur. /// Romen rakamını temsil eden bir dize public static string ArabicRoman(this int numberArab) ( StringBuilder numberRoman = new StringBuilder(); //Arap sayısından "-" işaretini hariç tutun ve onu Romen sayısının ilk karakteri yapın if (numberArab)< 0) { числоРимское.Append("-"); числоАраб = -числоАраб; } if (числоАраб == 0) throw new ArgumentOutOfRangeException("числоАраб", числоАраб, "Недопустимое значение аргумента: римские числа не могут быть равными\"0\""); else if (числоАраб >MaximumRomanNumber()) throw new ArgumentOutOfRangeException("numberArab", numberArab, string.Format("Geçersiz argüman değeri: (0)'dan büyük bir Romen rakamı belirtmek mümkün değildir", MaximumRomanNumber())); //Arapça sayıyı kendisini oluşturan Roma sayılarına ayrıştırıyoruz ve bunları tek satırda birleştiriyoruz var gerekliBasicRomanNumbers = from to in BasicRomanNumbers.Keys nereye<= числоАраб orderby к descending select к; foreach (int тек in необходимыеБазовыеРимскиеЧисла) { while ((числоАраб / тек) >= 1) ( numberArab -= current; numberRoman.Append(BaseRomanNumbers[current]); ) ) return numberRoman.ToString(); ) /// /// Romen rakamlarını Arap rakamlarına dönüştürür /// /// İnt türüne dönüştürülmesi gereken Roma numarası /// Parametre olarak Romen olmayan bir sayı iletildiğinde oluşturulur /// Romen rakamının Arapça gösterimini temsil eden bir tam sayı public static int RomanVArabic(bu dize Roma numarası) ( int Arapça sayı = 0; sbyte negatif = 1; string Roma = Roma numarası.Trim(); if (Roman == "-") ( negatif = -1; Roma = Roma .Substring( 1); ) StringBuilder RomanNumber şablonu = new StringBuilder(); foreach (int to in BasicRomanNumbers.Keys) ( int index = BasicRomanNumbers.Keys.IndexOf(k); string quantifier="?"; if (index == 0 || ( indeks % 4) == 0) quantifier="(0,3)"; şablonRomanNumber.Insert(0, string.Format("(?<{0}>((1))(2))?", k.ToString(), BasicRomanNumbers[k], quantifier)); ) //Büyük/küçük harf dikkate alınmaz + eşleşme, RomanNumber modeli dizesinin başından başlamalıdır.Insert(0, " (?i) ^"); //Eşleşme, RomanNumber şablonunun sonunda bulunmalıdır.Append("$"); //Basitleştirilmiş kontrol. IVII if (!Regex.IsMatch() gibi hataları kontrol etmez Roman, RomanNumber şablonu.ToString())) throw new FormatException(string.Format("Text \"(0)\" bir Romen rakamı değildir", numberRoman)); Eşleşme numarası = Regex.Match(Roman, RomanNumber modeli. ToString()); foreach (int to in BasicRomanNumbers.Keys) ( numberArab += number.Groups[to.ToString()].Length / BasicRomanNumbers[to].Length * to; ) return numberArab * negatif))

"Romen Rakamları" makalesi hakkında yorum yazın

Notlar

Ayrıca bakınız

Teknik not: Teknik sınırlamalar nedeniyle bazı tarayıcılar bu makalede kullanılan özel karakterleri görüntülemeyebilir. Bu karakterler, web tarayıcınıza, işletim sisteminize ve yüklü yazı tiplerine bağlı olarak kutu, soru işareti veya diğer anlamsız karakterler olarak görünebilir. Tarayıcınız UTF-8'i yorumlama yeteneğine sahip olsa ve Code2000, Arial Unicode MS, Lucida Sans Unicode veya ücretsiz Unicode yazı tiplerinden biri gibi çok çeşitli Unicode'u destekleyen bir yazı tipi yüklemiş olsanız bile, kullanmanız gerekebilir. farklı bir tarayıcı çünkü tarayıcı yetenekleri farklılık gösterir, bu alan genellikle farklılık gösterir.

Romen rakamlarını karakterize eden bir alıntı

Prenses, "Sık sık düşünüyorum, belki de bu bir günahtır" dedi, "ve sık sık şunu düşünüyorum: Kont Kirill Vladimirovich Bezukhoy yalnız yaşıyor... bu büyük bir servet... ve o ne için yaşıyor? Hayat onun için bir yüktür ama Borya yeni yaşamaya başlıyor.
Kontes, "Muhtemelen Boris'e bir şeyler bırakacaktır" dedi.
- Tanrı biliyor ya, ahbap! [sevgili dostum!] Bu zengin insanlar ve soylular çok bencil. Ama yine de Boris'le birlikte yanına gideceğim ve ona neler olduğunu doğrudan anlatacağım. Bırakın benim hakkımda istediklerini düşünsünler, oğlumun kaderi buna bağlıyken gerçekten umurumda değil. - Prenses ayağa kalktı. - Şimdi saat iki ve saat dörtte öğle yemeği yiyorsun. Gitmek için zamanım olacak.
Ve Anna Mihaylovna, zamanı nasıl kullanacağını bilen bir St. Petersburg iş kadınının teknikleriyle oğlunu çağırttı ve onunla birlikte salona çıktı.
Kendisine kapıya kadar eşlik eden kontese, "Elveda ruhum," dedi ve oğlunun fısıltıyla "bana başarılar dile" diye ekledi.
– Kont Kirill Vladimirovich'i ziyaret ediyor musun, ma chere? - dedi yemek odasındaki sayım da koridora çıkıyor. - Kendini daha iyi hissederse Pierre'i benimle akşam yemeğine davet et. Sonuçta beni ziyaret etti ve çocuklarla dans etti. Ne olursa olsun beni ara, ma cher. Bakalım Taras bugün nasıl öne çıkıyor? Kont Orlov'un hiçbir zaman bizim gibi bir akşam yemeği yemediğini söylüyor.

Kontes Rostova'nın içinde oturdukları arabası samanla kaplı cadde boyunca ilerleyip Kont Kirill Vladimirovich Bezukhy'nin geniş avlusuna girdiğinde Prenses Anna Mihaylovna oğluna "Mon cher Boris, [Sevgili Boris,"] dedi. "Mon cher Boris," dedi anne, elini eski paltosunun altından çıkarıp ürkek ve şefkatli bir hareketle oğlunun eline koyarak, "nazik ol, dikkatli ol." Kont Kirill Vladimirovich hala senin için mafya babası ve sizinki buna bağlı gelecekteki kader. Bunu unutma dostum, bildiğin kadar tatlı ol...
"Eğer bundan aşağılanma dışında bir sonuç çıkacağını bilseydim..." diye cevapladı oğul soğuk bir tavırla. "Ama sana söz verdim ve bunu senin için yapıyorum."
Girişte birinin arabası durmasına rağmen kapıcı, anne ve oğluna (kendilerini bildirme emri vermeden, nişlerdeki iki sıra heykelin arasındaki cam girişe doğrudan giren) bakarak eskiye anlamlı bir şekilde baktı. Pelerinli, kimi istediklerini sordu, prensesleri mi, kontu mu, ve kontu öğrendikten sonra, Lordluklarının şu anda daha kötü durumda olduğunu ve Lordluklarına kimseyi kabul etmediklerini söyledi.
Oğul Fransızca "Gidebiliriz" dedi.
- Dostum dostum! [Arkadaşım!] - dedi anne yalvaran bir sesle, sanki bu dokunuş onu sakinleştirebilir ya da heyecanlandırabilirmiş gibi yine oğlunun eline dokundu.
Boris sustu ve paltosunu çıkarmadan sorgulayıcı bir şekilde annesine baktı.
"Sevgilim," dedi Anna Mihaylovna yumuşak bir sesle kapıcıya dönerek, "Kont Kirill Vladimirovich'in çok hasta olduğunu biliyorum... bu yüzden geldim... Ben bir akrabayım... Zahmet etmeyeceğim. sen canım... Ama sadece Prens Vasily Sergeevich'i görmem gerekiyor: çünkü o burada duruyor. Lütfen geri bildirimde bulunun.
Kapıcı asık suratla ipi yukarı doğru çekti ve arkasını döndü.
Yukarıdan aşağı koşan ve merdiven pervazının altından bakan çoraplı, ayakkabılı ve kuyruklu garsona "Prenses Drubetskaya'dan Prens Vasily Sergeevich'e" diye bağırdı.
Anne boyalı ipek elbisesinin kıvrımlarını düzeltti, duvardaki sağlam Venedik aynasına baktı ve yıpranmış ayakkabılarıyla merdiven halısında hızlı adımlarla yukarı çıktı.
"Mon cher, vue m'avez promis, [Dostum, bana söz vermiştin,'' diye tekrar Oğul'a döndü ve elinin dokunuşuyla onu heyecanlandırdı.
Oğul, gözleri kapalı, sakince onu takip etti.
Bir kapının Prens Vasily'e tahsis edilen odalara açıldığı salona girdiler.
Anne-oğul odanın ortasına çıkıp, girişte ayağa fırlayan yaşlı garsona yön sormak isterken, kapılardan birinde bronz bir kapı kolu döndü ve kadife kürk mantolu Prens Vasily, bir yıldız, yakışıklı siyah saçlı bir adamı uğurlayarak sade bir şekilde çıktı. Bu adam ünlü St. Petersburg doktoru Lorrain'di.
"C"est donc pozitif? [Peki bu doğru mu?] - dedi prens.
"Mon Prince, "errare humanum est", mais... [Prens, hata yapmak insan doğasıdır.] - diye cevapladı doktor, lütufta bulunarak ve şöyle dedi: Latince kelimeler Fransız aksanı.
– C"est bien, c"est bien... [Tamam, tamam...]
Anna Mihaylovna ve oğlunu fark eden Prens Vasily, doktoru selamlayarak kovdu ve sessizce ama sorgulayıcı bir bakışla onlara yaklaştı. Oğul, annesinin gözlerinde aniden derin bir üzüntünün ifade edildiğini fark etti ve hafifçe gülümsedi.
- Evet, hangi üzücü durumlarda birbirimizi görmek zorunda kaldık Prens... Peki ya sevgili hastamız? - sanki ona yöneltilen soğuk, aşağılayıcı bakışı fark etmiyormuş gibi dedi.
Prens Vasily şaşkınlıkla ona, sonra Boris'e sorgulayıcı bir şekilde baktı. Boris kibarca eğildi. Prens Vasily, eğilmeye cevap vermeden Anna Mihaylovna'ya döndü ve sorusunu başını ve dudaklarını hareket ettirerek yanıtladı, bu da hasta için en büyük umut anlamına geliyordu.
- Gerçekten mi? - Anna Mihaylovna bağırdı. - Ah, bu çok korkunç! Düşünmek korkutucu... Bu benim oğlum” diye ekledi Boris'i işaret ederek. "Kendisi sana teşekkür etmek istedi."
Boris tekrar kibarca eğildi.
- İnan prensim, bir annenin kalbi bizim için yaptıklarını asla unutmaz.
Prens Vasily, fırfırını düzelterek ve burada, Moskova'da, himaye edilen Anna Mihaylovna'nın önünde jest ve sesinde, "Sizin için hoş bir şey yapabildiğime sevindim, sevgili Anna Mihaylovna" dedi. St. Petersburg'da, Annette'in akşam Scherer'inde.
Sert bir şekilde Boris'e dönerek, "İyi hizmet etmeye ve layık olmaya çalışın" diye ekledi. - Memnun oldum... Tatil için mi buradasın? – o tarafsız ses tonuyla yazdırdı.
Boris, "Yeni bir yere gitmek için bir emir bekliyorum, Ekselansları," diye yanıtladı Boris, ne prensin sert ses tonundan rahatsızlık duydu ne de konuşmaya katılma arzusu gösterdi, ama o kadar sakin ve saygılı bir şekilde prens baktı ki onu dikkatle.
- Annenle mi yaşıyorsun?
Boris, "Kontes Rostova ile yaşıyorum" dedi ve tekrar ekledi: "Ekselansları."
Anna Mikhailovna, "Bu, Nathalie Shinshina ile evlenen Ilya Rostov" dedi.
Prens Vasily monoton sesiyle "Biliyorum, biliyorum" dedi. – Je n"ai jamais pu concevoir, comment Nathalieie'nin bizimkinden daha kötü bir dönem geçirmeye karar vermesi - leche l Bir kişiliğin tamamlanması aptalca ve alay konusu.Et joueur a ce qu"on dit. [Natalie'nin nasıl ortaya çıkmaya karar verdiğini asla anlayamadım. Bu pis ayıyla evlen, tamamen aptal, komik bir insan ve bir oyuncu diyorlar.]
Anna Mihaylovna, sanki Kont Rostov'un böyle bir görüşü hak ettiğini biliyormuş gibi dokunaklı bir şekilde gülümseyerek, "Mais tres cesur dostum, mon prens," dedi, ama zavallı yaşlı adama acımak istedi. – Doktorlar ne diyor? - kısa bir sessizlikten sonra prensese sordu ve gözyaşlarıyla lekelenmiş yüzünde bir kez daha büyük bir üzüntü ifade etti.
Prens "Çok az umut var" dedi.
“Ve amcama hem bana hem de Bora'ya yaptığı iyiliklerden dolayı tekrar teşekkür etmek istedim.” Sanki bu haberin Prens Vasily'yi çok memnun etmesi gerekirmiş gibi bir ses tonuyla "Cest oğlu filleuil," [Bu onun vaftiz oğlu,'' diye ekledi.
Prens Vasily düşündü ve yüzünü buruşturdu. Anna Mihaylovna, Kont Bezukhy'nin iradesine göre kendisinde bir rakip bulmaktan korktuğunu fark etti. Onu rahatlatmak için acele etti.
Bu kelimeyi özel bir güvenle ve umursamazlıkla telaffuz ederek, "Amcam'a olan gerçek aşkım ve bağlılığım olmasaydı" dedi: "Onun karakterini biliyorum, asil, açık sözlü, ama yanında sadece prensesler var... Henüz gençler..." Başını eğdi ve fısıltıyla ekledi: "Son görevini yerine getirdi mi prens?" Bu son dakikalar ne kadar kıymetli! Sonuçta daha kötü olamaz; bu kadar kötüyse pişirilmesi gerekir. Biz kadınlar, Prens," şefkatle gülümsedi, "bu şeyleri nasıl söyleyeceğimizi her zaman biliriz." Onu görmek gerekli. Benim için ne kadar zor olursa olsun acı çekmeye zaten alışmıştım.
Görünüşe göre prens, akşam Annette Scherer'de yaptığı gibi, Anna Mihaylovna'dan kurtulmanın zor olduğunu anlamış ve anlamıştı.
"Bu buluşma onun için, yani Anna Mihaylovna için zor olmaz mıydı?" dedi. - Akşama kadar bekleyelim, doktorlar kriz sözü verdi.
"Ama bu anlarda bekleyemezsin Prens." Düşünün, il va du salut de oğlu ame... Ah! çok korkunç, les devoirs d'un chretien... [Düşün, onun ruhunu kurtarmakla ilgili! Ah! bu korkunç bir şey, bir Hıristiyanın görevi...]
İç odalardan bir kapı açıldı ve kontun prenseslerinden biri, kontun yeğenleri, kasvetli ve soğuk bir yüz ve bacaklarına kadar çarpıcı derecede orantısız uzun bir bel ile içeri girdi.
Prens Vasily ona döndü.
- Peki o nedir?
- Hepsi aynı. Ve nasıl istersen, bu gürültü... - dedi prenses, Anna Mihaylovna'nın etrafına sanki bir yabancıymış gibi bakarak.
Anna Mihaylovna mutlu bir gülümsemeyle, hafif bir yürüyüşle kontun yeğenine doğru yürürken, "Ah, chere, je ne vous reconnaissais pas, [Ah canım, seni tanıyamadım,'' dedi. "Je viens d'arriver et je suis a vous pour vous aider a soigner mon oncle. J'imagine, kombien vous avez souffert, [Amcanı takip etmene yardım etmeye geldim. Nasıl acı çektiğini hayal edebiliyorum," diye ekledi katılım gözlerimi devirdi.
Prenses hiçbir şeye cevap vermedi, gülümsemedi bile ve hemen oradan ayrıldı. Anna Mihaylovna eldivenlerini çıkardı ve kazandığı pozisyonda bir sandalyeye oturarak Prens Vasili'yi yanına oturmaya davet etti.
-Boris! “- oğluna dedi ve gülümsedi, “Ben konta, amcamın yanına gideceğim, sen de bu arada Pierre'e git dostum, ona Rostov'lardan bir davetiye vermeyi unutma. ” Onu yemeğe çağırırlar. Gitmeyecek sanırım? - prense döndü.
"Tam tersine," dedi prens, görünüşe göre keyifsizdi. – Je serais tres content si vous me debarrassez de ce jeune homme... [Beni bu genç adamdan kurtarırsan çok sevinirim...] Burada oturuyor. Kont onu hiç sormadı.
Omuz silkti. Garson genç adamı aşağıya ve başka bir merdivenden Pyotr Kirillovich'e götürdü.

Pierre'in St. Petersburg'da kendisine bir kariyer seçecek vakti olmadı ve gerçekten de isyan nedeniyle Moskova'ya sürgüne gönderildi. Kont Rostov'un anlattığı hikaye doğruydu. Pierre polisin ayıyla bağlanmasına katıldı. Birkaç gün önce geldi ve her zamanki gibi babasının evinde kaldı. Hikâyesinin Moskova'da zaten bilindiğini ve babasına karşı her zaman kaba davranan çevresindeki hanımların bu fırsatı değerlendirerek kontu sinirlendireceklerini varsaymasına rağmen, yine de doğum gününde babasının yarısının peşine düştü. varış. Prenseslerin her zamanki meskeni olan misafir odasına girdiğinde, nakış çerçevesinin başında ve içlerinden birinin yüksek sesle okuduğu bir kitabın arkasında oturan hanımları selamladı. Üç tane vardı. Anna Mihaylovna'ya gelen en büyük, temiz, uzun belli, sert kız okuyordu; hem kırmızı hem de güzel olan genç olanlar, yalnızca birinin dudağının üzerinde onu çok güzel yapan bir ben olmasıyla farklıydı ve bir kasnak dikiyorlardı. Pierre sanki ölmüş ya da rahatsızlanmış gibi karşılandı. En büyük prenses okumayı yarıda kesti ve sessizce korkmuş gözlerle ona baktı; bensiz en küçüğü tam olarak aynı ifadeyi takındı; Neşeli ve kıkırdayan bir ben ile en küçüğü, muhtemelen komikliğini öngördüğü yaklaşan sahnenin neden olduğu bir gülümsemeyi gizlemek için nakış çerçevesinin üzerine eğildi. Sanki desenleri çözüyormuş gibi saçını aşağı doğru çekti ve eğildi ve kendini gülmeden edemedi.
"Merhaba kuzenim" dedi Pierre. – Benim için hoş bir şey yok mu? [Merhaba kuzen. Beni tanımıyor musun?]
"Seni çok iyi tanıyorum, çok iyi."
– Kontun sağlık durumu nasıl? Onu görebilir miyim? – Pierre her zamanki gibi beceriksizce sordu ama utanmıyordu.
– Kont hem fiziksel hem de manevi olarak acı çekiyor ve görünüşe göre onun daha fazla manevi acı çekmesine neden olmaya özen göstermişsiniz.
-Sayıyı görebilir miyim? - Pierre tekrarladı.
- Hımm!.. Onu öldürmek istiyorsan tamamen öldür, o zaman görebilirsin. Olga, git bak amcana et suyu hazır mı, zamanı geldi," diye ekledi, Pierre'e onların babasını sakinleştirmekle meşgul olduklarını, onun ise açıkça onu sadece üzmekle meşgul olduğunu gösterdi.
Olga gitti. Pierre ayağa kalktı, kız kardeşlere baktı ve eğilerek şöyle dedi:
- O halde ben evime gideceğim. Mümkün olduğunda bana söylersin.
Dışarı çıktı ve benli kız kardeşinin çınlayan ama sessiz kahkahası arkasında duyuldu.
Ertesi gün Prens Vasily geldi ve kontun evine yerleşti. Pierre'i yanına çağırdı ve ona şöyle dedi:
– Mon cher, eğer Petersbourg'a gelirseniz, üçünüzü bitirirsiniz; c'est tout ce que je vous dis. (Canım, eğer burada da St. Petersburg'daki gibi davranırsan sonun çok kötü olur; sana söyleyecek başka bir şeyim yok.) Kont çok ama çok hasta: sen Onu görmeme hiç gerek yok.
O zamandan beri Pierre rahatsız edilmedi ve bütün gününü üst kattaki odasında tek başına geçirdi.
Boris odasına girdiğinde, Pierre odasında yürüyor, ara sıra köşelerde duruyor, sanki görünmez bir düşmanı kılıçla deliyormuş gibi duvara doğru tehditkar hareketler yapıyor, gözlüklerinin üzerinden sert bir şekilde bakıyor ve sonra yeniden yürümeye başlıyor, şöyle diyordu: belirsiz kelimeler, titreyen omuzlar ve uzanmış kollar.
- L "Angleterre a vecu, [İngiltere bitti," dedi, kaşlarını çatarak ve parmağını birine doğrultarak. - M. Pitt comme tracere a la ulus et au droit des gens est condamiene a... [Pitt, bir hain olarak. millete ve insanlara haklı olarak mahkum edildi ...] - Pitt hakkındaki cezasını bitirmeye vakti olmadı, o anda kendisini Napolyon'un kendisi olarak hayal etti ve kahramanıyla birlikte zaten tehlikeli bir geçiş yapmış durumdaydı. Pas de Calais'yi fethetti ve Londra'yı fethetti - genç, ince ve yakışıklı bir subayın kendisine girdiğini görünce durdu. Pierre, Boris'i on dört yaşında bir çocuk olarak terk etti ve onu kesinlikle hatırlamıyordu, ancak buna rağmen karakteristik çabukluğuyla; ve misafirperver bir tavırla onun elinden tuttu ve dostça gülümsedi.
- Beni hatırlıyor musun? – dedi Boris sakince, hoş bir gülümsemeyle. “Annemle birlikte sayıma geldim ama pek sağlıklı görünmüyor.
- Evet, iyi görünmüyor. Pierre, bu genç adamın kim olduğunu hatırlamaya çalışarak, "Herkes onu endişelendiriyor," diye yanıtladı.
Boris, Pierre'in onu tanımadığını hissetti, ancak kendisini tanıtmanın gerekli olduğunu düşünmedi ve en ufak bir utanç yaşamadan doğrudan gözlerinin içine baktı.
Pierre için oldukça uzun ve tuhaf bir sessizliğin ardından, "Kont Rostov bugün onunla yemeğe gelmenizi istedi," dedi.
- A! Rostov'u sayın! – Pierre sevinçle konuştu. - Demek onun oğlusun İlya. Tahmin edebileceğiniz gibi ilk başta sizi tanıyamadım. Uzun zaman önce benimle Jacquot... [Madam Jacquot...] ile Vorobyovy Gory'ye nasıl gittiğimizi hatırlayın.
Boris yavaşça, cesur ve biraz da alaycı bir gülümsemeyle, "Yanılıyorsun," dedi. – Ben Prenses Anna Mihaylovna Drubetskaya'nın oğlu Boris'im. Rostov'un babasının adı Ilya ve oğlunun adı Nikolai. Ve Jacquot adında kimseyi tanımıyordum.
Pierre sanki sivrisinekler ya da arılar ona saldırıyormuş gibi kollarını ve başını salladı.
- Ah, bu nedir! Her şeyi karıştırdım. Moskova'da o kadar çok akraba var ki! Sen Boris misin... evet. Peki, sen ve ben anlaştık. Peki Boulogne seferi hakkında ne düşünüyorsunuz? Sonuçta, eğer sadece Napolyon kanalı geçerse İngilizler kötü zamanlar mı geçirecek? Keşif gezisinin çok mümkün olduğunu düşünüyorum. Villeneuve hata yapmazdı!
Boris, Boulogne seferi hakkında hiçbir şey bilmiyordu, gazeteleri okumamıştı ve Villeneuve'ü ilk kez duymuştu.
Sakin, alaycı bir ses tonuyla, "Burada Moskova'da siyasetten çok akşam yemekleri ve dedikodularla meşgulüz" dedi. – Bu konuda hiçbir şey bilmiyorum ve bu konuda hiçbir şey düşünmüyorum. Moskova en çok dedikoduyla meşgul” diye devam etti. "Şimdi senden ve konttan bahsediyorlar."
Pierre sanki muhatabı için tövbe edeceği bir şey söylemesinden korkuyormuş gibi nazik gülümsemesiyle gülümsedi. Ancak Boris, doğrudan Pierre'in gözlerinin içine bakarak net, net ve kuru bir şekilde konuştu.
"Moskova'nın dedikodudan başka yapacak daha iyi bir şeyi yok" diye devam etti. “Herkes kontun servetini kime bırakacağıyla meşgul, gerçi belki hepimizden daha uzun yaşar, bunu da içtenlikle diliyorum...
Pierre, "Evet, bunların hepsi çok zor," dedi, "çok zor." “Pierre hâlâ bu memurun yanlışlıkla kendisi için garip bir sohbete girmesinden korkuyordu.
Boris hafifçe kızararak, ancak sesini ya da duruşunu değiştirmeden, "Ve sana öyle geliyor olmalı ki, sana öyle geliyor ki herkes sadece zengin adamdan bir şeyler almakla meşgul."
Pierre, "Öyle" diye düşündü.
“Ama yanlış anlaşılmaları önlemek adına şunu söylemek istiyorum ki, beni ve annemi bu insanların arasında sayarsanız çok yanılırsınız.” Biz çok fakiriz, ama en azından kendi adıma konuşayım: Tam da babanız zengin olduğu için kendimi onun akrabası olarak görmüyorum ve ne ben ne de annem ondan hiçbir şey istemeyecek veya kabul etmeyeceğiz.
Pierre uzun süre anlayamadı, ancak anlayınca kanepeden atladı, karakteristik hızı ve beceriksizliğiyle Boris'in elini aşağıdan yakaladı ve Boris'ten çok daha fazla kızardı, karışık bir utanç duygusuyla konuşmaya başladı ve sıkıntı.
- Bu tuhaf! Ben gerçekten... ve kim düşünebilirdi ki... Çok iyi biliyorum...
Ancak Boris onun sözünü bir kez daha kesti:
"Her şeyi ifade edebildiğime sevindim." Belki senin için hoş olmayan bir durumdur, kusura bakma,” dedi, onun tarafından rahatlatılmak yerine Pierre'e güven vererek, “ama umarım seni kırmamışımdır.” Her şeyi doğrudan söylemek gibi bir kuralım var... Nasıl aktarabilirim? Rostov'larla akşam yemeğine gelecek misin?
Ve görünüşe göre kendisini ağır bir görevden kurtaran, garip bir durumdan kendisi çıkan ve başkasını bu duruma sokan Boris, yeniden tamamen keyifli hale geldi.
"Hayır, dinle," dedi Pierre sakinleşerek. - Harika bir insansın. Az önce söylediğin şey çok iyi, çok iyi. Elbette beni tanımıyorsun. Uzun zamandır görüşmüyoruz... Çocukluğumuzdan beri... Beni varsayabilirsin... Seni anlıyorum, seni çok anlıyorum. Yapmazdım, cesaretim olmazdı ama bu harika. Seninle tanıştığım için çok mutluyum. Biraz duraklayıp gülümseyerek, "Bende ne sandın?" diye ekledi. - O güldü. - Peki ne olmuş? Seni daha iyi tanıyacağız. Lütfen. – Boris'le el sıkıştı. – Biliyor musun, hiç sayıma gitmedim. Beni aramadı... İnsan olarak ona üzülüyorum... Peki ne yapmalı?
– Peki Napolyon'un orduyu nakletmeye vakti olacağını mı düşünüyorsunuz? – diye sordu Boris gülümseyerek.
Pierre, Boris'in konuşmayı değiştirmek istediğini fark etti ve onunla aynı fikirde olarak Boulogne girişiminin avantajlarını ve dezavantajlarını özetlemeye başladı.
Uşak Boris'i prensese çağırmaya geldi. Prenses gidiyordu. Pierre, Boris'e yaklaşmak için akşam yemeğine geleceğine söz verdi, elini sıkıca sıktı, gözlüklerinden sevgiyle gözlerine baktı... Pierre gittikten sonra odanın içinde uzun süre dolaştı, artık görünmez düşmanı delmedi. kılıcıyla ama bu sevgili, akıllı ve güçlü gencin anısına gülümsüyor.
Erken gençlik döneminde ve özellikle yalnızlık durumunda olduğu gibi, buna karşı mantıksız bir şefkat hissetti. genç adam ve onunla arkadaş olacağına kendi kendine söz verdi.
Prens Vasily prensesi uğurladı. Prenses gözlerine bir mendil tuttu ve yüzü gözyaşları içindeydi.
- Bu korkunç! korkunç! - dedi, - ama bana maliyeti ne olursa olsun görevimi yapacağım. Gece için geleceğim. O böyle bırakılamaz. Her dakika değerlidir. Prenseslerin neden geciktiğini anlamıyorum. Belki Tanrı bunu hazırlamanın bir yolunu bulmama yardım eder!... Adieu, mon prens, que le bon Dieu vous soutienne... [Elveda prens, Tanrı seni desteklesin.]
Prens Vasily ondan uzaklaşarak, "Elveda, ma bonne, [Elveda canım,'' diye yanıtladı.
Arabaya bindiklerinde anne oğluna, "Ah, çok kötü bir durumda" dedi. "Kimseyi pek tanımıyor."
“Anlamıyorum anne, Pierre'le ilişkisi nedir?” - oğluna sordu.
“Vasiyet her şeyi söyleyecek dostum; Kaderimiz ona bağlı...
- Peki neden her şeyi bize bırakacağını düşünüyorsun?
- Ah, dostum! O çok zengin, biz ise çok fakiriz!
"Eh, bu yeterince iyi bir neden değil, anneciğim."
- Aman Tanrım! Tanrım! Ne kadar kötü biri! - diye bağırdı anne.

Anna Mikhailovna oğluyla birlikte Kont Kirill Vladimirovich Bezukhy'yi ziyarete gittiğinde Kontes Rostova uzun süre tek başına oturdu ve gözlerine mendil koydu. Sonunda aradı.
Kendini birkaç dakika bekleten kıza öfkeyle, "Neden bahsediyorsun canım?" dedi. – Hizmet etmek istemiyor musun, yoksa ne? Bu yüzden sana bir yer bulacağım.
Kontes, arkadaşının acısından ve aşağılayıcı yoksulluğundan dolayı üzgündü ve bu nedenle huysuzdu, bunu her zaman hizmetçiye "canım" ve "sen" diye hitap ederek ifade ediyordu.
Hizmetçi, "Bu senin hatan," dedi.
- Kont'tan bana gelmesini iste.
Paytak paytak yürüyen Kont, her zamanki gibi biraz suçlu bir bakışla karısına yaklaştı.
- Kontes! Orman tavuğundan ne güzel sote au madere [Madeira'da sote] olur, ma chere! Denedim; Taraska'ya bin ruble vermem boşuna değil. Maliyetler!
Karısının yanına oturdu, kollarını cesurca dizlerine dayadı ve gri saçlarını karıştırdı.
- Ne sipariş edersiniz Kontes?
- Peki dostum, burada kirli olan ne? - dedi yeleği işaret ederek. Gülümseyerek, "Çok doğru," diye ekledi. - İşte bu Kont: Paraya ihtiyacım var.
Yüzü hüzünlendi.
- Ah, Kontes!...
Ve sayım cüzdanını çıkararak telaşlanmaya başladı.
"Çok ihtiyacım var Kont, beş yüz rubleye ihtiyacım var."
Ve bir kambrik mendil çıkardı ve onunla kocasının yeleğini ovuşturdu.
- Şimdi. Kim var orada? - yalnızca aradıkları kişilerin çağrılarına koşacaklarından emin olduklarında bağıran bir sesle bağırdı. - Mitenka'yı bana gönder!
Kontun yetiştirdiği ve artık tüm işlerinden sorumlu olan asil oğul Mitenka, sessiz adımlarla odaya girdi.



© 2024 rupeek.ru -- Psikoloji ve gelişim. İlkokul. Kıdemli sınıflar