Kaip sukurti romėniško skaičiaus keitiklį ir interaktyvią romėniškų skaičių diagramą

Romėniški skaitmenys nebėra esminė mūsų kasdienio gyvenimo dalis. Bet mes juos naudojame projektuodami paminklus, laikrodžius ir net sporto renginiams.

Kas yra romėniški skaitmenys?

Romėniški skaitmenys atsirado senovės Romoje ir daugelį amžių išliko įprastas skaičių rašymo būdas visoje Europoje. Jų naudojimas jau seniai išgyveno pačią Romos imperiją. Juos palaipsniui pakeitė hindu ir arabų numeracijos sistema, kurią naudojame šiandien - skaičiai nuo nulio iki devynių.

Romėniški skaitmenys žymimi lotyniškos abėcėlės raidžių deriniais, kurie šioje sistemoje naudojami kaip skaitmenys. Tačiau, skirtingai nei dešimtainis bazę, su simboliais 0 iki 9 , The Romos sistema dirba septynias kapitalizuojamos lotynų raides I, V, X, L, C, D, M .

Iš pradžių nebuvo vienos raidės žymėjimo nuliui. Vietoj to jie vartojo lotynišką žodį „ Nulla“ , kuris reiškia „nėra“.

Kaip veikia romėniškieji skaitmenys?

Hindu-arabų kalba šios raidės vaizduojamos taip: I = 1, V = 5, X = 10, L = 50, C = 100, D = 500 ir M = 1000 .

Kiti skaičiai suformuojami sujungiant šias raides pagal tam tikras taisykles: Simbolis, išdėstytas po kito, yra vienodas ar didesnis, prideda jo vertę.

Pvz.,   VI = V + I = 5 + 1 = 6 arba LX = L + X = 50 + 10 = 60 .VI ir LX žymėjimai skaitomi kaip „vienas daugiau nei penki“ ir „dešimt daugiau nei penkiasdešimt“.

Simbolis, įdėtas prieš vieną iš didesnių verčių, atima jo vertę. Pavyzdžiui, IX = X - I = 10 - 1 = 9, ir XC = C - X = 100 - 10 = 90 .

IX ir XC žymės skaitomos kaip „vienas mažiau nei dešimt“ ir „dešimt mažiau nei šimtas“.

Skaičiai, didesni nei 1 000, suformuojami uždėjus brūkšnį virš simbolio. Taigi V̅ = 5000 , X̅ = 10 000 , L̅ = 50 000 , C̅ = 100 000 , D̅ = 500 000 ir M̅ = 1 000 000 .

Vadinamoji „standartinė“ forma neleidžia to paties simbolio naudoti daugiau nei tris kartus iš eilės. Tačiau retkarčiais galima pamatyti išimčių. Pavyzdžiui, IIII 4 numeriui, VIIII 9 numeriui ir LXXXX 90.

Interaktyvi romėniškų skaičių ir jų derinių diagrama

Užveskite pelės žymeklį virš kiekvieno simbolio, kad atskleistumėte jo indų ir arabų atitikmenį:

I II III IV V VI VII VIII IX X XX XXX XL L LX LXX LXXX XC C CC CCC CD D DC DCC DCCC CM M V̅ X̅ L̅ C̅ D̅ M̅

Parašiau šios interaktyvios romėniškų skaičių diagramos kodą, kad galėčiau įdėti čia į freeCodeCamp News.

Atsižvelgiant į tai, kad HTML įterpimo funkcija nėra visos apimties kodo redaktorius, nurodytas kodas nėra struktūrizuotas ir pateikiamas kaip atskiri HTML, CSS ir „JavaScript“ failai. Veikiau jis yra parašytas kaip vienas HTML failas ir elementai, pridėti stiliaus ir funkcionalumo tikslais.

Čia yra visa mano interaktyvios romėnų skaitmenų lentelės kodų saugykla.

Romėnų skaitmenų keitiklis

Įveskite ne neigiamą skaičių nuo 0 iki 5 000. Tada spustelėkite Konvertuoti, kad atskleistumėte romėniško skaitmens atitikmenį.

Arabų - romėnų
Paversti

Nėra jokių programinių apribojimų skaičiui 5000 ar daugiau. Algoritmas, valdantis konversiją, veiktų vienodai.

Erdvė, reikalinga rodyti romėniškus skaitmeninius ekvivalentus dideliais skaičiais, didėja ir didėja, be didesnės naudos atskleidžiant kažką naujo.

Pats kodas susideda iš HTML dalies, aprašančios turinį su įterptais stiliais, kad būtų lengviau sąveikauti, ir pridėjus „JavaScript“ funkcionalumui.

Tai įvesties elementas, kurio tipas yra „skaičius“, kad įvesties duomenys būtų apriboti skaitmeninėmis reikšmėmis ir dviem mygtukais. Mygtukas „Konvertuoti“ yra prijungtas prie funkcijos, atliekančios konvertavimą, o mygtukas „Rodyti“ pateikia romėniško skaičiaus ekvivalentą.

Kodėl išvestis per mygtuko elementą? Stilius gerai veikė, kai abu mygtukai buvo pritvirtinti kartu. Atsižvelgiant į ribotą įdėjimo funkcionalumą, tai atrodė laiko taupymas.

Aiškumo dėlei šie elementai priskiriami kintamiesiems:

const inputField = document.querySelector('input'); // input element const convertButton = document.getElementById('convert'); // convert button const outputField = document.getElementById('display'); // output element

Funkcijoje convertToRoman()yra logika ir pateikiamas rezultatas:

function convertToRoman() { let arabic = document.getElementById('arabicNumeral').value; // input value let roman = ''; // variable that will hold the result }

Skaitinė vertė iš įvesties elemento išsaugoma kintamajame, vadinamame „ arabų “, kad būtų galima atlikti tolesnius bandymus. Kintamasis vadinamas " Romos " surengs eilutę atstovaujantis Romos ekvivalentą Arabų įėjimo.

Toliau yra dvi vienodo ilgio masyvai, vienas turi arabiškus skaičius, kitas - romėnų atitikmenis. Abi yra mažėjimo tvarka, kad supaprastintų atimtis:

// descending order simplifies subtraction while looping const arabicArray = [5000, 4000, 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1] const romanArray = ['V̅', 'MV̅','M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'] 

„Unicode“ lentelės padeda formuoti didesnius nei 1000 simbolius.

Galiausiai, čia yra logika, kuri patikrina įvestą skaičių ir jį paverčia.

if (/^(0|[1-9]\d*)$/.test(arabic)) { // Regular expression tests if (arabic == 0) { // for decimal points and negative outputField.innerHTML = "Nulla"; // signs } else if (arabic != 0) { for (let i = 0; i < arabicArray.length; i++) { while (arabicArray[i] <= arabic) { roman += romanArray[i]; arabic -= arabicArray[i]; } } outputField.innerHTML = roman; } } else { outputField.innerHTML = "Please enter non negative integers only. No decimal points."; }

Pirmojo bandymo metu tikrinami kableliai ir neigiami ženklai. Jei randama, pranešime prašoma „įvesti tik neigiamus sveikuosius skaičius“.

Kitas testas patikrina, ar įvestas skaičius lygus nuliui. Tokiu atveju rodoma eilutė „Nulla“.

Priešingu atveju, kilpos vis sujungia romėnų eiles, atimdamos arabiškus skaičius, kol pastarasis tenkina „loop“ sąlygą. Tada jis rodo romėnišką vartotojo įvesties atitikmenį.

Kaip ir naudojant interaktyvią diagramą, romėnų skaitmenų keitiklio kodas yra nustatytas, kad galėtumėte jį nukopijuoti ir įterpti į bet kurį straipsnį. Čia yra visa kodų saugykla.