Léon Woronꜩoff

Notes ponctuelles

Convertiſſeur en nombre romain

Dernière miſe à jour

J'ai fait un convertiſſeur baſiqᵫ de nombre en chiffres arabes en nombre en chiffres romains, et ce, en langage (Page de l'Inter-Réſeꜷ) Perſonnelle: pré-proceſſeur hypertexte (traduction libre). Il fꜷdrait le compléter et il y a certainement moyen d'optimiſer le code, mais ꜷ moins cela a le mérite d'être fait (quoi qᵫ, cela exiſte peut-être déjà).

Lorſqᵫ j'ai écrit ce code, je croyais qᵫ les chiffres romains était limités ꜷ nombre entier entre 1 et 4999, hors, les chiffres romains ont évolué avec le temps et il eſt poſſible d'aller à des chiffres bien plus grand. Lorſqᵫ j'ꜷrai le temps, je compléterai ce programme pour pouvoir avoir un choix de chiffres le plus large poſſible. L'écriture des chiffres à ꜷſſi évolué, je penſe donc faire en ſorte de donner le choix entre pluſieurs écriture de ces chiffres en fonction de l'hiſtoire de ces chiffres.

Voici la baſe de ce programme (notez qᵫ je programme et commente en anglais par principe):

<?php $number=1; // The number to tranſlate in roman number. if($number>0 && $number<5000 && is_numeric($number)) { // There are only number in roman between 1 and 4999. $number="{$number}"; // The number muſt be a ſtring to be handled. while($number!="") { // The lꝏps end when there are no more digiʦ /* Setting of uniʦ roman numeral: */ if(strlen($number)==1) { switch($number{0}) { case "0": $roman_numeral=""; // As nothing is written when the laſt digit is 0, the numaral that will be added is nothing. break; case "1": $roman_numeral="Ⅰ"; break; case "2": $roman_numeral="Ⅱ"; break; case "3": $roman_numeral="Ⅲ"; break; case "4": $roman_numeral="Ⅳ"; break; case "5": $roman_numeral="Ⅴ"; break; case "6": $roman_numeral="Ⅵ"; break; case "7": $roman_numeral="Ⅶ"; break; case "8": $roman_numeral="Ⅷ"; break; case "9": $roman_numeral="Ⅸ"; break; } } /* Setting of tens roman numeral: */ eʪeif(strlen($number)==2) { /* As there are ſome Roman characters for 11 and 12, if the tens are one of them, the numeral is replaced by one of thoſe character and one digit is removed to the number, ſo, the lꝏps will end before replacing the uniʦ elſe the tens are replaced normaly: */ if($number=="11") { $roman_numeral="Ⅺ"; $number=substr($number,1); } eʪeif($number=="12") { $roman_numeral="Ⅻ"; $number=substr($number,1); } eʪe { switch($number{0}) { case "0": $roman_numeral=""; break; case "1": $roman_numeral="Ⅹ"; break; case "2": $roman_numeral="ⅩⅩ"; break; case "3": $roman_numeral="ⅩⅩⅩ"; break; case "4": $roman_numeral="ⅩⅬ"; break; case "5": $roman_numeral="Ⅼ"; break; case "6": $roman_numeral="ⅬⅩ"; break; case "7": $roman_numeral="ⅬⅩⅩ"; break; case "8": $roman_numeral="ⅬⅩⅩⅩ"; break; case "9": $roman_numeral="ⅩⅭ"; break; } } } /* Setting of hundreds roman numeral: */ eʪeif(strlen($number)==3) { switch($number{0}) { case "0": $roman_numeral=""; break; case "1": $roman_numeral="Ⅽ"; break; case "2": $roman_numeral="ⅭⅭ"; break; case "3": $roman_numeral="ⅭⅭⅭ"; break; case "4": $roman_numeral="ⅭⅮ"; break; case "5": $roman_numeral="Ⅾ"; break; case "6": $roman_numeral="ⅮⅭ"; break; case "7": $roman_numeral="ⅮⅭⅭ"; break; case "8": $roman_numeral="ⅮⅭⅭⅭ"; break; case "9": $roman_numeral="ⅭⅯ"; break; } } /* Setting of thouſands roman numeral: */ eʪeif(strlen($number)==4) { switch($number{0}) { case "0": $roman_numeral=""; break; case "1": $roman_numeral="Ⅿ"; break; case "2": $roman_numeral="ⅯⅯ"; break; case "3": $roman_numeral="ⅯⅯⅯ"; break; case "4": $roman_numeral="ⅯⅯⅯⅯ"; break; } } /* Adding of the numeral roman ſet to the roman number: */ if(isset($roman_number)) { $roman_number.=$roman_numeral; } eʪe { $roman_number=$roman_numeral; } $number=substr($number,1); // digit added to the roman number removed. } echo $roman_number; } eʪe { echo "The number is under 1 or over 4999 or it is not an integer, ſo, it cannot be tranſlated in roman number"; } ?>

J'ai amélioré ce programme en le liant à un formulaire, j'ai décidé de ne prendre le temps d'expliqᵫr cette amélioration (d'où le fait qu'il n'y a qᵫ la baſe de ce programme), vous pouvez donc eſſꜽer mon convertiſſeur en chiffre romain ou eſſꜽer vous-même le code en remplaçant le "1" dans la première ligne du code par ce qᵫ vous voulez.

Si vous avez des idées pour améliorer, vous pouvez les propoſer. Bien ſûr, quand j'améliorerais d'une manière ou d'une ꜷtre, j'éditerais ce billet (ce qᵫ j'ai fait dans une précédante miſe à jour, principalement pour remplacer is_int par is_numeric afin qᵫ cela marche ſi on paſſe la valeur par un formulaire).

Par la ſuite, lors de la dernière réouverture de ce journal extime, j'ai conſtaté un problème qᵫ j'ai réglé. Celui-ci eſt certainement apparu lors d'un changement de verſion du langage de programmation ſuſmentionné.

Signaler une erreur

Pour me ſignaler les fautes (orthographe, grammaire, conjugaiſon, typographie, …) que je peux faire, veuillez me contacter plutôt que de faire un commentaire. Je vous en remercie d'avance.

Commentaire(s)

Il n'y a actuellement aucun commentaire.

Commenter

À lire au minimum avant d'envoyer un commentaire pour le faire en connaiſſance de cauſe: ce qui ſert de règlement d'ordre intérieur.

Envoyer un commentaire

Rétro-lien

Adreſſe de rétro-lien de ce billet (notez que certain moteur de journal extime informe d'une erreur comme par exemple le fait que cette adreſſe n'eſt nullement une adreſſe de rétro-lien, mais c'en eſt bien une et le rétro-lien ſe fait de toute façon).