From a2631210fea449f85b97afba4fe1612bb1f56726 Mon Sep 17 00:00:00 2001 From: Divlo Date: Sun, 22 Sep 2019 10:09:25 +0200 Subject: [PATCH] Conversion de nombre romain en nombre arabe --- README.md | 3 ++- php/config.php | 2 +- scripts/fonctions_principales.js | 24 ++++++++++++++++--- scripts/main.js | 13 ++++++++-- views/function-list.php | 2 +- .../convertRomanArabicNumbers.php | 6 +++++ 6 files changed, 42 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index c8366b2..ad333e2 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,8 @@ 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 | +| **convertArabicToRoman(nombre)** | Convertis un nombre arabe en nombre romain. | - nombre : le nombre à convertir | +| **convertRomanToArabic(str)** | Convertis un nombre romain en nombre arabe. | - str : le nombre romain à convertir | | **armstrongNumber(nombre)** | Vérifie si un nombre fait partie des nombres d'Armstrong ou non. | - nombre : le nombre à tester | ## La liste des Fonctions Annexes : diff --git a/php/config.php b/php/config.php index 9a46505..81daf9b 100644 --- a/php/config.php +++ b/php/config.php @@ -70,7 +70,7 @@ switch ($currentpage) { break; case '/views/function-views/convertRomanArabicNumbers.php': $title = "Conversion d'un nombre arabe en nombre romain"; - $description = "Convertis un nombre arabe en nombre romain."; + $description = "Convertis un nombre arabe en nombre romain (et l'inverse aussi)."; $image = 'https://function.divlo.fr/img/function-image/convertRomanArabicNumbers.png'; break; case '/views/function-views/armstrongNumber.php': diff --git a/scripts/fonctions_principales.js b/scripts/fonctions_principales.js index 80dc0ba..91bc3f8 100644 --- a/scripts/fonctions_principales.js +++ b/scripts/fonctions_principales.js @@ -263,7 +263,7 @@ function binToUtf8(s){ } // Convertis un nombre arabe en nombre romain -function convertRomanArabicNumbers(nombre) { +function convertArabicToRoman(nombre) { // Tableau contenant chaque correspondance entre un nombre arabe et un nombre romain const correspondances = [ @@ -313,9 +313,27 @@ function convertRomanArabicNumbers(nombre) { return chiffresRomains; } +// Convertis un nombre romain en nombre arabe +function convertRomanToArabic(str) { + var result = 0; + // the result is now a number, not a string + var decimal = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]; + var roman = ["M", "CM","D","CD","C", "XC", "L", "XL", "X","IX","V","IV","I"]; + for (var i = 0;i<=decimal.length;i++) { + while (str.indexOf(roman[i]) === 0){ + //checking for the first characters in the string + result += decimal[i]; + //adding the decimal value to our result counter + str = str.replace(roman[i],''); + //remove the matched Roman letter from the beginning + } + } + return result; +} + // Vérifie si un nombre fait partie des nombres d'Armstrong ou non -function armstrongNumber(nombre) { - let nombreString = nombre.toString(); +function armstrongNumber(number) { + let nombreString = number.toString(); let nombreStringLength = nombreString.length; let result = 0; diff --git a/scripts/main.js b/scripts/main.js index 1488da6..5626620 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -212,14 +212,23 @@ $(function () { $("#submitConvertRomanArabicNumbers").click(function() { let numbersValue = $('#numbersArabic').val(); + let convertNumberType = $("#convertNumberType option:selected").text(); if(isEmptyValue(numbersValue)) { $('.results').html(emptyMessageError); } - else if (!isNaN(parseInt(numbersValue))) { - let result = convertRomanArabicNumbers(parseFloat(numbersValue.replace(/\s/g,''))); + else if (!isNaN(parseInt(numbersValue)) && convertNumberType === "Nombre Romain") { + let result = convertArabicToRoman(parseInt(numbersValue.replace(/\s/g,''))); $('.results').html(`${formatNumberResult(numbersValue.replace(/\s/g,''))} s'écrit ${result} en chiffres romains.`); } + else if (convertNumberType === "Nombre Arabe") { + if (!isNaN(parseInt(numbersValue))) { + $('.results').html(`${numbersValue} est déjà en chiffres arabes.`); + } else { + let result = convertRomanToArabic(numbersValue); + $('.results').html(`${numbersValue} s'écrit ${result} en chiffres arabes.`); + } + } else { $('.results').html(messageError); } diff --git a/views/function-list.php b/views/function-list.php index 149b056..a4abce4 100644 --- a/views/function-list.php +++ b/views/function-list.php @@ -54,7 +54,7 @@ Conversion d'un nombre arabe en nombre romain - Convertis un nombre arabe en nombre romain. + Convertis un nombre arabe en nombre romain (et l'inverse aussi). Nombre d'Armstrong diff --git a/views/function-views/convertRomanArabicNumbers.php b/views/function-views/convertRomanArabicNumbers.php index a9d3310..db50998 100644 --- a/views/function-views/convertRomanArabicNumbers.php +++ b/views/function-views/convertRomanArabicNumbers.php @@ -14,6 +14,12 @@
+
+
+