begin process at 2010 02 10 11:41:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > [UNIT] ROMANUTILS, TOUT POUR CONVERTIR LES CHIFFRES ROMAINS VERS LES ENTIERS ET INVERSEMENT

[UNIT] ROMANUTILS, TOUT POUR CONVERTIR LES CHIFFRES ROMAINS VERS LES ENTIERS ET INVERSEMENT


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths Classé sous :conversion, chiffre, arabes, romains Niveau :Débutant Date de création :01/11/2005 Date de mise à jour :03/11/2006 04:11:53 Vu / téléchargé :15 071 / 410

Auteur : f0xi

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Aprés quelques heures de travail, voici le resultat final du tout premier algorythme que j'avais fait.

voici donc l'unitée RomanUtils qui permet de convertir les chiffres romain (strict) vers des entiers et inversement.

En esperant que tout cela vous serat utile et BONNE NOUVELLE pour une fois il y'a un Zip avec mon code!
Egalement dans le Zip, une petite application (RomanUtilsTest) pour montrer l'utilisation de l'unité RomanUtils,
avec en cadeaux, la Date du jours en chiffre romain! (hahaha ... pardon ...)


ps1 : voir le fichier .chm pour l'aide
ps2 : pas de commentaire dans la source pour le moment, a venir...


 Conclusion

Pour toute questions, suggestions, amelioration, postez la sur ce sujet.

Possibilitée de mise a jours ... plus tard ...

Remerciements :
a Florenth pour ses bonne idées et ses suggestions de code.

FAFQ (Frequently Asked Funny Question):

- Avec quoi tu code ? avec Delphi 7 et mes doigts.
- Avec quoi tu fait les chm ? avec HTML Help Workshop de microsoft.
- Avec quoi tu fait tes zip ? avec l'excelent 7-Zip.
- Avec quoi on fait un Croc-Steak ? avec deux tranches de pain de mie, un bon gros steak haché et beaucoup de gruiyere. MIAM (j'ai faim!)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

01 novembre 2005 10:09:50 :
petite erreur dans les StringReplaces, reparée... aprés une nuit blanche ... plus assé de neuronnes pour voir l'erreur. ^^
01 novembre 2005 10:31:41 :
ajout de 4 nouvelles valeurs qui permet de prendre en compte les notations "exotique" des chiffres romains. tel que IM pour 999 au lieu de CMXCIX par exemple.
05 novembre 2005 12:21:24 :
Grosse modification : refection totale de l'algorythme de RomanToInt, creation de plusieurs fonctions permettant de faire des traitements sur les chiffres Romain, mise en Unité du tout.
05 novembre 2005 12:27:31 :
correction d'une faute de "phrappe" ^^
05 novembre 2005 12:30:20 :
correction de la source affichée afin d'avoir une bonne colorisation syntaxique. (a quand une fonction "preview" sur delphifr !?)
05 novembre 2005 18:19:49 :
ajout d'un fichier d'aide au format CHM
05 novembre 2005 18:36:09 :
suppression de l'affichage de la source, inutile vus qu'il y a un zip ;)
07 novembre 2005 01:45:18 :
v0.0.1.2 : Amelioration des fonctions et du code, suppression d'apels redondant a certaines fonction interne, suppression de methodes lourdes pour un code plus condensé et leger.
07 novembre 2005 21:50:41 :
Amelioration des performances des fonctions RomanToInt, IntToRoman et RomanCharToValue. Merci a Florenth pour ses astuces.
03 novembre 2006 04:11:53 :
mise a jours v0.0.1.3 : augmentation des performances des routines pour l'anniversaire de la source.

 Sources du même auteur

Source avec Zip DYNAMIC LIBRARY LOADER CLASS: GAGNEZ DU TEMPS POUR CHARGER L...
Source avec Zip BASE64/BASE64URL ENCODE/DECODE
Source avec Zip NEXTGENS -> UNITÉS DE TYPES ÉVOLUÉS NOUVELLE GÉNÉRATION (DE...
Source avec Zip SIMPLES SOMME DE DONNÉES 8, 16, 32, 64 BITS
Source avec Zip CHAINLISTS, LISTE CHAINÉE

 Sources de la même categorie

Source avec Zip Source avec une capture CONVERTISSEUR D'UN NOMBRE DÉCIMAL EN BINAIRE ET HEXADECIMAL par ludokk
Source avec Zip Source avec une capture PREMIER OU PAS? par ludokk
Source avec Zip Source avec une capture CONJECTURE DU CARRÉ DES FACTEURS par Bacterius
Source avec Zip Source avec une capture GÉNÉRATEUR DE NOMBRES PSEUDO-ALÉATOIRES par Bacterius
Source avec Zip Source avec une capture ALGORITHME DE HASH LEA par Bacterius

 Sources en rapport avec celle ci

CONVERSION D'UN NOMBRE COMPRIS 0 ET 999999999999999999 (18 C... par Hror
Source avec Zip Source avec une capture CONVERSION DE TEMPERATURE par noch100
Source avec Zip Source avec une capture CONVERSION LITTÉRALE D' 1 NOMBRE EN PORTUGAIS par MAURICIO
Source avec Zip Source avec une capture CONVERSION LITTÉRALE D'UN NOMBRE ENTIER OU FLOTTANT par japee
Source avec Zip CONVERSION MONTANT MONÉTAIRE, NOMBRE ET DATE EN CHAINE TOUT ... par qoprek

Commentaires et avis

Commentaire de Delphiprog le 01/11/2005 22:16:00 administrateur CS

Une autre version réalisée par MHI est située à l'adresse : http://www.delphifr.com/code.aspx?ID=26944
Ce qui est intéressant, c'est que chacun a sa manière de coder la solution.

Commentaire de f0xi le 03/11/2005 13:53:25 administrateur CS

@Florenth : tu mets le doigt dessus.

a l'epoque des romains, les nombres etaient bien entendus normaliser et allant du plus grand au plus petit.

la notation 999 s'ecrit bien CMXCIX et pas IM mais a notre epoque, certain transgresse les regles etablie et le note IM. pour etre plus court.
certain meme quadruple les lettres ce qui n'etait pas le cas a l'epoque.
donc comme il semble y avoir les vieux chiffres romain et les chiffres romain "moderne" j'ai prevus le coups dans ma fonction.

mais aprés de nombreux tests, avec des valeurs "reglementaire" et "moderne" ma fonction ne semble pas commetre d'erreur. a chaque fois le resultat est bon.

mais si tu decouvre une particularitée, fais le moi savoir.

@delphiprog : aaaah! merci, justement j'avais chercher sans succés si il y avait deja quelque chose d'equivalent ici.
mais voila justement le probleme que j'eradique dans ma fonction, cad, la notation moderne.
la fonction de notre ami MHI est justement mise en echec par cette notation.
de plus il semblerais que la fonction de MHI donne des resultat erroné, sur un exemple simple :
XL (40) elle nous donne 60 (LX), idem pour XLVIII (48) elle renvoie 68...
d'ailleur un petit coups d'oeuil a son algorythme et on remarque vite qu'il n'a pas pris en compte les soustractions. sans vouloir etre medisant vis a vis de son travail.
je pense qu'il a oublier de faire quelques recherche preliminaire sur les chiffres romain et leur regles de base.

son aglorythme est assé complexe (sans parler du fait qu'il est incomplet) comparer au miens.
mais je preferais dire qu'ils ne sont pas comparable car j'utilise une methode carrement differente , il est vrai que je n'ai pas chercher midi a quatorze heure en me lançant dans des calculs et conditions complexe, aprés une nuit blanche on pardonneras mes neuronnes qui etaient deja fatigué par GLScene et sa hierarchie chaotique (je suis en train de me faire un Pong en openGL ... faut bien debuter par quelque chose).

Commentaire de f0xi le 05/11/2005 01:21:32 administrateur CS

@florenth :

pour romstr, oui c'est effectivement vrai ...

pour result, je crois que c'est une preference de ma part d'utiliser une locale plutotque result lui meme ayant deja eu des problemes avec l'utilisation directe de result dans d'autre appli.
mais en effet ça pourrait aller avec elle.

pour les caracteres non valide, c'est juste que j'ai pas eu le temps. ^^

pour VL, en effet, c'est la ou justement tu avais raisons avec faiblesse de l'algo qui n'en est pas un au final.
en fait on devrait tout bonnement supprimer la notation exotique de l'algo et appeler la fonction StrictRomanToInt();

mais en meme temps, il faut se poser la question, ou trouve t'on encore des chiffres romain ?

dans les numerotations des paragraphes de texte ... et c'est a peut prés tout.
donc generalement n'utilise que I V et X...
au dela, les gens passe sois au vrai chiffres 1,2,3 ou aux lettres A,B,C ...

c'est pourquoi je n'ai pas chercher a ameliorer plus que ça la fonction.
mais si tu te donne la peine de l'ameliorée, a la rigeur, je corrigerais en fonction de tes resultats (en te citant dans la source bien entendus).

ps : en parlant de ça, a quand les codes sources commun ou on pourrais citer plusieurs personne en tant qu'auteur ?

Commentaire de f0xi le 05/11/2005 18:26:43 administrateur CS

En effet, pas du tout la meme approche. par contre je sais pas si c'est les commentaires que tu as mis mais elle as l'air beaucoup plus "grosse"... ^^

sinon j'ai mis a jours pas mal de chose derniere, j'ai notement ajouter un fichier d'aide pour l'utilisation de l'unité RomanUtils.

je vais regarder a ta fonction de plus prés pour voir les difference entre les deux ...

Commentaire de f0xi le 06/11/2005 23:39:04 administrateur CS

avec quoi verifie tu la vitesse des fonctions ?

ça a l'air plutot enorme comme difference ...

Commentaire de f0xi le 07/11/2005 01:30:57 administrateur CS

bon alors, au vus de tes resultats, j'ai modifier la source de toute mes fonctions.
voir l'historique et le nouveau zip.

Commentaire de f0xi le 07/11/2005 20:07:36 administrateur CS

en effet, j'ai tester egalement de mon coté :

Athlon 1800+ 1.53Ghz, DDR PC2100 2x133Mhz,
Process load 22, CPU Charge 20-40% (firefox)

RomanBench process mode : Real Time

> 5 x 100 000 RomanToInt : moyenne 441ms
(total 2203ms pour 500 000 requettes, plus rapide 437ms, plus longue 453ms)
CPU Burn Charge : 58%
VERDICT : reglo. on pourrait encore ameliorer ... Assembleur ? ^^

> 5 x 100 000 IntToRoman : moyenne 213ms
(total 1063ms pour 500 000 requettes, plus rapide 203ms, plus longue 219ms)
CPU Burn Charge : 27%
VERDICT : vraiment reglo.

> 5 x 200 000 IsRomanNumber (str) : moyenne 22ms
(total 109ms pour 1 000 000 requettes, plus rapide 15ms, plus longue 31ms)
CPU Burn Charge : 8%
VERDICT : carrement reglo.

> 5 x 200 000 IsRomanNumber (int) : moyenne 0ms
(total 0ms pour 1 000 000 requettes, plus rapide 0ms, plus longue 0ms)
CPU Burn Charge : 0%
VERDICT : no comment.

j'avais jamais penser a tester comme ça ... les resultat parlent d'eux memes.

Commentaire de f0xi le 07/11/2005 21:38:48 administrateur CS

HAHA!

bonne nouvelle aprés gros reflechissage :

nouvelle données des benchs :

> 5 x 100 000 RomanToInt : moyenne 56ms
(total 282ms pour 500 000 requettes, plus rapide 47ms, plus longue 63ms)
gain ~78%
dont 22ms sont due a IsRomanNumber(STR), si on supprime la verification on descend donc a 34ms pour 100 000 requettes soit un gain de ~120%

> 5 x 100 000 IntToRoman : moyenne 84ms
(total 421ms pour 500 000 requettes, plus rapide 78ms, plus longue 94ms)
gain ~25%

ce qui donne des temps de moins d'une seconde pour traiter 1 millions de requettes.
ce qui est largement raisonnable je pense.

je mets donc a jours l'unitée en Version 1.2i (i pour improved) ^^

Commentaire de JulioDelphi le 08/11/2006 15:06:35 administrateur CS

HAPPY ANNIVERSAIRE LA SOURCE !!

Commentaire de dje_jay le 30/10/2007 16:54:11

Bon travail!

Je l'ai d'ailleur porté en java : http://www.javafr.com/codes/VERSION-JAVA-ROMANUTILS-TOUT-CONVERTIR-CHIFFRES-ROMAINS-VERS_44548.aspx

(J'ai tenu a respecter la source d'origine autant que possible)...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

conversion en arabe de chiffre en lettre sous delphi5 [ par azerouk ] SVP je voudrai codes de conversion en arabe de chiffre en lettre merci .sous delphi 5 programme de conversion d'un nombre Hexadécimal en un nombre BCD [ par racimo1985 ] Bonjour tout le monde, je programme en assembleur sur un micro intel 8085 Je recherche un programme que me permettrait de convertir un nombre Hexadéci conversion binaire en caractère [ par codepvc ] Bonjour,voulez vous m'aider pour convertir un texte en binaire à un texte en caractère, c'est-à-dire prendre chaque 8bits et le convertir utilisant le conversion monétaire multi devises [ par neige21 ] Bonjour à tous je suis une debutante en Delphi je cherche un algorithme pour faire la conversion monétaire multi devises, j'ai beau essayé d'en faire Conversion colonne excel en caractère [ par TheSotr ] Bonjour,Je suis un réel débutant en Delphi (depuis hier en fait ^^) mais ai des bonnes bases de programmation en Visual Basic, C, Java (un peu), MatLa Conversion de caractére á ASCII avec 2 edit box (champs de texte) [ par Dancsi27 ] Bonjours tout le monde,J'ai une petite exercice á faire pour l'école oú j'ai une fiche avec un button Quitter et 2 edit box (champs de texte)Le button Conversion fichier DXF en fichier image BMP [ par FredericDemartin ] Bonjour, quelqu'un pourrait il me renseigner sur du code me permettant de convertir un fichier DXF en fichier image BMP pour pouvoir le voir apres dan chiffre en lettre dans un état de sortie d'une facture en quickreprot [ par saidajerry ] Bonjour tout le monde, s'il y a quelqu'un qui peut m'aider et je le remercie mille fois d'avance.mon problème et que j'ai édité un état de sortie avec Problemme de conversion [ par zakidao ] [b][size=200]salut a tout les membres j'ai un petit problemme dans mon source s'est la converssion[^^clinoeil1] voici la photo[/size][/b][img]http://i Conversion Jpg To mpg [ par zakidao ] salut a tout les membre de delphifr [^^clinoeil1] j'ai une petite question comment je peut convertir du Jpg A mpg avec delphi je vous remercier d'avan


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales