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

 C Discussion :

Decomposition decimal d'un nombre


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Decomposition decimal d'un nombre
    Bonjour
    Mon probleme est le suivant on me passe en parametre un int que je dois decomposer en valeur decimal dans un tableau.
    J'arrive a calculer la taille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    a = mon-nombre;
    b = 1;
    do {
     
    	a = a / 10;
    	b = b + 1;
    	}while(a > 0);
    apres j'ai assayer de faire un masque et de l'appliquer pour decomposer mon nombre sans resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for(i = 0;i < 8;i++) {
     
    	j >> d;
     
    	tab[i] = j & mon_nombre;
    	printf("%d\n", tab[i]);
    	j = j / 10;
    }
    Quelqu'un aurait une idee?
    D'avance merci

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    -
    que je dois decomposer en valeur decimal dans un tableau
    Je comprend que tu veux le convertir en BCD en mettant les digits dans un tableau. Vrai ?

    - Ton calcul de la taille semble erroné : pour 0 à 9 b=2 et non 1; pou 10 à 99 b=3 et non 2,... A moins que tu prennes un de plus pour placer le signe.

    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(i = 0;i < 8;i++) {
     
    	j >> d;
     
    	tab[i] = j & mon_nombre;
    	printf("%d\n", tab[i]);
    	j = j / 10;
    }
    -- Qu'est-ce que représente j et d dans cette affaire ?
    -- j>>d ne fait rien du tout (pas d'effet de bords) et ne sert à rien
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonsoir,

    Pour savoir combien de chiffres composent un nombre, la fonction log10 (math.h) devrait convenir.
    Il faut arrondir le résultat à l'entier supérieur.
    En considérant le cas des nombres 10,100,1000, ... pour lesquels log10 = 1,2,3 ..., il suffit d'ajouter 1 au nombre d'origine avant de le passer au log10.

    Voilà ce que ça donne :

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 254
    Points : 538
    Points
    538
    Par défaut
    Est-ce qu'un code comme celui-ci t'aiderait ? (je l'ai pas testé mais ça devrait fonctionner)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int		nbr;
    int		j;
    int		i;
    int		tab[10];
     
    for (j = 1; nbr / j > 10; j = j * 10);
    for (i = 0; j >= 1; ++i)
    {
    	tab[i] = nbr / j;
    	nbr = nbr % j;
    	j = j / 10;
    }
    "L'insanité consiste à répéter la même action dans l'espoir d'aboutir à un résultat différent" Albert Einstein
    ----------------------
    T.O.A.O 6-MarViN

Discussions similaires

  1. code hexa-decimal d'un nombre
    Par perl4user dans le forum Langage
    Réponses: 1
    Dernier message: 15/01/2009, 18h44
  2. conversion nombre binaire -> decimal
    Par spoun95 dans le forum Langage
    Réponses: 7
    Dernier message: 25/11/2005, 17h46
  3. [C#]saisir que un nombre decimal dans 1 textBox
    Par mcay dans le forum Windows Forms
    Réponses: 25
    Dernier message: 04/11/2005, 15h43
  4. [ABAP] Convertir nombre decimal en binaire
    Par danael dans le forum SAP
    Réponses: 3
    Dernier message: 04/04/2005, 12h17
  5. definir un nombre decimal sur 2 numero max apres la vergule
    Par nil dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/02/2004, 21h49

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