diff --git a/README.md b/README.md index 84e90cd..1ff1518 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ Le projet est disponible sur [function.divlo.fr](https://function.divlo.fr/). | **convertCurrency(value, currency, url)** | Convertis une valeur dans une devise dans une autre devise. [exchangeratesapi.io](https://exchangeratesapi.io/) | - value : la valeur à convertir - currency : la devise à avoir après conversion - url : l'url de la requête à l'API en fonction du paramètre dans l'url '?base=' | | **utf8ToBin(s)** | UTF-8 vers Binaire | - s : la valeur à convertir | | **binToUtf8(s)** | Binaire vers UTF-8 | - s : la valeur à convertir | +| **convertRomanArabicNumbers(nombre)** | Convertis un nombre arabe en nombre romain. | - nombre : le nombre à convertir | ## La liste des Fonctions Annexes : | Nom | Description | Paramètre(s) | diff --git a/css/style.css b/css/style.css index f690e4a..b2408e9 100644 --- a/css/style.css +++ b/css/style.css @@ -81,6 +81,11 @@ header { #convertIn { width: 6.7em; } +#roman-numerals { + width: 20%; + min-width: 200px; + padding-bottom: 20px; +} .table { color: white; } diff --git a/img/function-image/convertRomanArabicNumbers.png b/img/function-image/convertRomanArabicNumbers.png new file mode 100644 index 0000000..bc06157 Binary files /dev/null and b/img/function-image/convertRomanArabicNumbers.png differ diff --git a/php/config.php b/php/config.php index 5fcd239..a4936e6 100644 --- a/php/config.php +++ b/php/config.php @@ -68,6 +68,11 @@ switch ($currentpage) { $description = "Convertis du texte (encodé en UTF-8) en binaire et l'inverse aussi."; $image = 'https://function.divlo.fr/img/function-image/convertBinaryText.png'; break; + case '/views/function-views/convertRomanArabicNumbers.php': + $title = "Conversion d'un nombre arabe en nombre romain"; + $description = "Convertis un nombre arabe en nombre romain."; + $image = 'https://function.divlo.fr/img/function-image/convertRomanArabicNumbers.png'; + break; default: $title = 'Erreur 404'; $description = "Cette page n'existe pas!"; diff --git a/scripts/fonctions_principales.js b/scripts/fonctions_principales.js index 8f8cb7c..a56ee98 100644 --- a/scripts/fonctions_principales.js +++ b/scripts/fonctions_principales.js @@ -260,4 +260,55 @@ function binToUtf8(s){ } catch (error) { return s; } +} + +// Convertis un nombre arabe en nombre romain +function convertRomanArabicNumbers(nombre) { + // Tableau contenant chaque correspondance entre un nombre arabe et un nombre romain + const correspondances = + [ + [1000, "M"], + [900, "CM"], + [500, "D"], + [400, "CD"], + [100, "C"], + [90, "XC"], + [50, "L"], + [40, "XL"], + [10, "X"], + [9, "IX"], + [5, "V"], + [4, "IV"], + [1, "I"], + ]; + + // Initialisation de la variable qui va contenir le résultat de la conversion + let chiffresRomains = ""; + + /* + Étapes pour écrire un nombre romain : + + On vérifie quand le nombre arabe est >= à la plus grande valeur possible dans la table de correspondance des nombres romains de haut en bas puis on rajoute la lettre romaine correspondante à la plus grande valeur possible dans la variable chiffresRomains et on soustrait la valeur du chiffre romain qu'on vient d'ajouter au nombre arabe puis on répète l'opération jusqu'à nombre arabe vaut 0... + + Exemple avec 27 : + 27 - X (10) = 17 + 17 - X (10) = 7 + 7 - V (5) = 2 + 2 - I (1) = 1 + 1 - I (1) = 0 + XXVII + */ + + function extraireChiffreRomain(valeurLettre, lettres) { + while (nombre >= valeurLettre) { + chiffresRomains = chiffresRomains + lettres; + nombre = nombre - valeurLettre; + } + } + + correspondances.forEach(correspondance => { + extraireChiffreRomain(correspondance[0], correspondance[1]); + }) + + return chiffresRomains; } \ No newline at end of file diff --git a/scripts/main.js b/scripts/main.js index 74c7e2d..ba768c3 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -209,6 +209,22 @@ $(function () { } }); + $("#submitConvertRomanArabicNumbers").click(function() + { + let numbersValue = $('#numbersArabic').val(); + + if(isEmptyValue(numbersValue)) { + $('.results').html(emptyMessageError); + } + else if (!isNaN(parseInt(numbersValue))) { + let result = convertRomanArabicNumbers(parseFloat(numbersValue.replace(/\s/g,''))); + $('.results').html(`${numbersValue} s'écrit ${result} en chiffres romains.`); + } + else { + $('.results').html(messageError); + } + }); + /* Permet d'afficher l'heure en temps réel sur le footer */ window.onload = realDateTime('realDateTime'); diff --git a/views/function-list.php b/views/function-list.php index 2277719..f4700e8 100644 --- a/views/function-list.php +++ b/views/function-list.php @@ -52,6 +52,10 @@ Conversion d'un texte en binaire et vice-versa Convertis du texte (encodé en UTF-8) en binaire et l'inverse aussi. + + Conversion d'un nombre arabe en nombre romain + Convertis un nombre arabe en nombre romain. + diff --git a/views/function-views/convertRomanArabicNumbers.php b/views/function-views/convertRomanArabicNumbers.php new file mode 100644 index 0000000..16c7591 --- /dev/null +++ b/views/function-views/convertRomanArabicNumbers.php @@ -0,0 +1,29 @@ + + + + + + + +
+

:

+

+
+ Roman Numerals +
+
+ + +
+
+
+ +
+
+

+

+
+
+ + + \ No newline at end of file