Romeinse cijfers

Door Mark L, 14 jaar geleden, 4.449x bekeken

Hieronder staan 2 functies. De ene om een Arabisch cijfer (ons cijfersysteem, 0-9) naar een Romeins cijfer te veranderen, de anderen om een Romeins cijfer terug naar een Arabisch cijfer te veranderen.

Romeinse cijfers gaan van 1 tot x. Ze kennen geen 0 (voor zover ik weet).
Arabische cijfers gaan van -x tot x. Dus de invoer van Arabische cijfers moet positief zijn.

Bij deze functies heb ik op de prestatie gelet. Ik mijn functie hiervoor geoptimaliseerd: De eerste functie genereerde alles: zelfs dat IV 4 is. De array bevatte alleen I, V, X, L, C, D en M. Maar dit was 3x zo traag dan onderstaande functies. Het verschil is echter amper merkbaar als je de functie 1x aanroept. Maar als je deze 2000x aanroept is er een groot verschil. (Wie roept deze functie 2000x aan? Ik heb geen idee.)
Om de snelheid te bevorderen geef ik de array ook telkens mee in de function-arguments: Ik verwijder de array-delen die al geweest zijn.
Als namelijk bij de eerste keer een getal kleiner is dan 50, dan maak je het getal kleiner. Dan zal de tweede keer het getal ook kleiner zijn dan 50. Logisch.

Er zijn romeinse cijfers die groter zijn dan 1000 (D). Deze worden eigenlijk gemaakt door het rijtje van I, V, X, L, C, D en M opnieuw te doen, alleen dan met een streepje erboven. Dit heb ik echter niet gedaan, omdat ik zelf geen getallen boven de 1000 nodig zal hebben. En ik denk dat de meesten van jullie dato ook niet nodig hebben.

Gesponsorde koppelingen

PHP script bestanden

  1. romeinse-cijfers

 

Er zijn 3 reacties op 'Romeinse cijfers'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Steen
steen
14 jaar geleden
 
0 +1 -0 -1
Misschien is het handig om cijfers groter dan 1000 wel te laten omzetten (even in de functieargs te zetten)


<span style="text-decoration:overline;">V</span> => 5000,
<span style="text-decoration:overline;">X</span> => 10000,
<span style="text-decoration:overline;">L</span> => 50000,
<span style="text-decoration:overline;">C</span> => 100000,
<span style="text-decoration:overline;">D</span> => 500000,
<span style="text-decoration:overline;">M</span> => 1000000,
Richard van Velzen
Richard van Velzen
14 jaar geleden
 
0 +1 -0 -1
Om die snelheidswinst te verbeteren kun je de variabelen beter static maken binnen de functie :-)

Maar desalniettemin, het ziet er leuk uit.
Ivo K
Ivo K
14 jaar geleden
 
0 +1 -0 -1
Erg leuk, alleen zou ik dit nog even toevoegen in roman2int ()

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$rom
= strtoupper($rom) ;
?>


Dan leest hij xxi ook als 21 en niet alleen XXI.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. romeinse-cijfers

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.