IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Conversion de chiffres arabes en chiffres romains et inversement


Sujet :

Contribuez

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut Conversion de chiffres arabes en chiffres romains et inversement
    Pour le plaisir et au bénéfice des étudiants de passage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    var A = [ 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 ],
    	R = [ "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" ],
    	Alength = A.length;
     
    // conversion d'un entier en nombre romain
    function AtoR( nb ){
    	// on s'assure d'avoir un entier entre 1 et 3999.
    	var x = parseInt( nb, 10 ) || 1,
    		str = "";
     
    	if ( x < 1 ){
    		x = 1;
    	} else if ( x > 3999 ){
    		x = 3999;
    	}
     
    	// pour chaque A[ i ], 
    	// tant que x est supérieur ou égal
    	// on déduit A[ i ] de x.
    	// arrêt de la boucle si x == 0
    	for ( var i = 0; i < Alength; ++i ){
    		while ( x >= A[ i ] ){
    			x -= A[ i ];
    			str += R[ i ];
    		}
     
    		if ( x == 0 ){
    			break;
    		}
    	}
     
    	return str;
    }
     
    // conversion d'un nombre romain en entier	
    function RtoA( str ){
    	// on s'assure d'avoir un texte ayant au moins un caractère.
    	if ( ( typeof str != "string" ) || ( str.length < 1 ) ) return;
     
    	var x = 0,
    		item = "";
     
    	// pour chaque R[ i ], 
    	// si R[ i ] est égal à item
    	// on ajoute A[ i ] à x
    	// et on enlève item de str.
    	for ( var i = 0; i < Alength; ++i ){
     
    		while ( str.length >= R[ i ].length ){
    			item = str.slice( 0, R[ i ].length );
     
    			if ( R[ i ] == item ){
    				x += A[ i ];
    				str = str.substring( R[ i ].length );
    			} else {
    				break;
    			}
    		}
    	}
     
    	return x;
    }
     
    /* Test */
     
    var str = "",
    	x = 0,
    	tab = [];
     
    for ( var n = 1; n < 4000; n++ ){
    	str = AtoR( n );
    	x = RtoA( str );
     
    	tab.push( [ n, str, x ] );
    }
     
    console.log( tab );

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  2. #2
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    L'idée est sympa.

Discussions similaires

  1. Conversion d'un nombre nb arabe en chiffres romains
    Par zebrac dans le forum Général Python
    Réponses: 7
    Dernier message: 22/11/2012, 18h55
  2. Réponses: 3
    Dernier message: 08/10/2012, 14h23
  3. Chiffres arabes en chiffres romains
    Par khayyam90 dans le forum Contribuez
    Réponses: 0
    Dernier message: 09/02/2011, 22h26
  4. [Dvp.NET|Intégré] [VB.Net/C#] Convertir un chiffre arabe en chiffre romain
    Par Philippe Vialatte dans le forum Contribuez
    Réponses: 10
    Dernier message: 10/11/2008, 23h51
  5. Inverseur chiffres arabes <-> romains
    Par arraroussama dans le forum Assembleur
    Réponses: 1
    Dernier message: 26/02/2006, 21h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo