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

Algorithmes et structures de données Discussion :

Recherche programme qui convertit les chiffres arabes en nb


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2002
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Recherche programme qui convertit les chiffres arabes en nb
    je cherche un programme qui convertit les chiffres arabes en nb romani et inversement en langage C ...

    Merci de maider les gars

  2. #2
    Membre confirmé
    Avatar de giminik
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    303
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 303
    Points : 482
    Points
    482
    Par défaut
    ça doit pas être très difficile dans le sens arabes->romains
    mais dans l'autre sens il faut faire de l'analyse de chaînes de caractères

  3. #3
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    C'est assez simple à faire. J'ai ça en Pascal sur un autre PC. Mais raisonne sur une feuille de papier, tu trouveras tout seul !

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  4. #4
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    j'ai l'impression que OLI57 (nouveau venu) est un étudiant à qui un prof a demandé un exercice et qui veut qu'on fasse son travail à sa place

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2002
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    On dirait bien, c'est un cas d'école qui est souvent demandé quand on débute.
    Surtout que ce n'est pas bien difficile.

  6. #6
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 84
    Points : 89
    Points
    89
    Par défaut
    J'ai donne la reponse a qqun alors je me dois de la donner ici a tous le monde:

    Je sais ca va faire des personnes pas contentes qui se disent que ce n'est pas leurs rendre service, et blablabla,

    Mais au bout d'une semaine, je pense qu'ils auront trouve ou du moins cherche, enfin cela est aussi un moyen de voir qu'il existe plusieurs solutions et de comparer ce qu'ils ont fait (je ne dis pas que ma solution est la meilleur loin de la, mais elle est honorable)

    Voici une solution:

    Je me base de la sorte parceque je ne me souviens plus des vrai valeurs:
    I==1
    V==5
    X==10
    C==50
    D==100
    L==500
    M==1000

    Voici le pseudo-code:

    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
     
     
    entier n;			//nombre arabe
    entier t;			//temporaire
    chaine_de_caracetere string;	//nombre romain
     
    entier mul;			//coef multiplicateur
     
    si (n!=0 && n<4000){			//si je suis compris entre 0 et 3999
     
    	t=n/1000;			//on recupere le nb de milliers
    	tantque (t!=0)			//tant qu on a des milliers
    	{
    		string+='M';		//on ajoute M
    		n-=1000;		//on retire 1000
    		t--;			//un millier a deja ete pris en compte
    	}
     
    	mul=100;
    	CarMax='M';
    	CarMoy='L';
    	CarMin='D';
     
    	while(n!=0)			//tant que le nombre n'est pas completement en romain
    	{
    		t=n/mul;
    		si(t==9){
    			string+=CarMax;
    			string+=CarMin;
    			n-=9*mul;
    		}
    		sinon{
    			si(t==4){
    				string+=CarMin;
    				string+=CarMoy;
    				n-=4*mul;
    			}
    			sinon //du si 4
    			{
    				si(t>4){
    					string+=CarMoy;
    					n-=5*mul;
    				}
    				tantque (t!=0)
    				{
    					string+=CarMin;
    					n-=mul;
    					t--;
    				}
    			}
    		}
    		//on se prepare pour la suite
    		selon (CarMax){
    		cas 'M':
    			CarMax=CarMin;
    			CarMoy='C';
    			CarMin='X';
    		cas 'D':
    			CarMax=CarMin;
    			CarMoy='V';
    			CarMin='I';
    		}
    		mul/=10;
    	}
     
    }
    et voici de que ca donne en c++

    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
     
     
    unsigned int n;		//nombre arabe
    cin>>n;			//saisie de n
     
    //30 lignes de code
    si (n!=0 && n<4000){			//si je suis compris entre 0 et 3999
    	int t(n/1000);			//temporaire
    	String string="";	//nombre romain
     
    	while (t--)			//tant qu on a des milliers
    	{
    		string+='M';		//on ajoute M
    		n-=1000;		//on retire 1000
    	}
     
    	int mul(100);
    	char CarMax('M');
    	char CarMoy('L');
    	char CarMin('D');
     
    	while(n)			//tant que le nombre n'est pas completement en romain
    	{
    		t=n/mul;
    		switch(t){
    		case 9:
    			string+=CarMax;
    			string+=CarMin;
    			n-=9*mul;
    			break;
    		case 4:
    			string+=CarMin;
    			string+=CarMoy;
    			n-=4*mul;
    			break;
    		case 5:
    			string+=CarMoy;
    			n-=5*mul;
    			//c normal qu'il n'y ai pas de break, c pour gere 6,7 et 8
    		default:
    			while(t--){
    				string+=CarMin;
    				n-=mul;
    			}
    		}
    		//on se prepare pour la suite
    		//possibilite de faire plus propre en utilisant un tableau contenant les caracteres, et trouve les prochains simplement avec l'indice -2
    		switch (CarMax){
    		case 'M':
    			CarMax=CarMin;
    			CarMoy='C';
    			CarMin='X';
    		case 'D':
    			CarMax=CarMin;
    			CarMoy='V';
    			CarMin='I';
    		}
    		mul/=10;
    	}
     
    }
    Enfin voila, c t pas trop dur
    Bonne continuation

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/02/2010, 09h21
  2. division qui conserve les chiffres après la virgule
    Par ali.ensi dans le forum Débuter
    Réponses: 3
    Dernier message: 05/10/2007, 13h26
  3. Réponses: 1
    Dernier message: 03/10/2007, 23h46
  4. Programme qui gère les QCM
    Par Ora92_IDS dans le forum Langage
    Réponses: 7
    Dernier message: 03/04/2007, 17h58
  5. [MySQL] fonctions qui convertit les chaînes de caractères en entier
    Par poyoland dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/03/2007, 11h36

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