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 :

De la base 10 à 16 :


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Par défaut De la base 10 à 16 :
    Bonjour ,
    Je dois écrire un programme en C qui permet de lire un entier n représenté dans la base B1 (2<=b1<=10) et le transformer dans la base b2 (2<=b2<=16),

    J'ai compris qu'il fallait prendre des entiers n, b1 et b2 , et de vérifier s'ils correspondent à la condition , puis transformer le n tel qu'on aura un m dans la b2 , mais je n'arrive pas à l'interpréter !
    Quelqu'un pourrait m'aider SVP !
    Merci !

  2. #2
    Membre chevronné Avatar de Pierre Maurette
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 283
    Par défaut
    Un changement de base est un changement de représentation. Donc parler de l'entier n est problématique. Exemple concret: b1 = 2, b2 = 8, n = "1111". Le résultat sera m = "17". La valeur correspondante sera 15 (si b2 était 10, m serait "15"). Cette valeur s'écrit aussi (littéral octal) 017.
    Dans cet exemple, n = "1020" serait une entrée invalide à cause du 2.
    Alternativement, pour compliquer un peu, vous pouvez décider que n est un entier. Mais alors vous n'en interprèterez que sa représentation décimale. Donc dans l'exemple 1111, 2, 8, vous commencerez à transformer l'entier 1111 en la chaine "1111". J'y reviendrai.
    J'ai prototypé vite fait le traitement en python. C'est non pythonesque ça peut donc se lire comme un algo:
    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
    import sys
     
    n = '1024'
    b1 = 6
    b2 = 10
     
    #n doit être [vu comme] une chaine
    n = str(n)#fonctionne que n soit un entier ou une chaine
     
    #vérification: chiffres compatibles avec base b1 ?
    for chiffre in n:
        if int(chiffre) >= b1:
            print >> sys.stderr, 'Erreur au moins sur le chiffre %s', chiffre
     
    #calcul valeur
    val, rang = 0, 1
    for chiffre in n[::-1]:
        val += int(chiffre) * rang
        rang *= b1
     
    print val
     
    #valeur -> représentation dans b2
    m = ''
    while val > 0:
        m = str(val % b2) + m
        val = val // b2
     
    print m
    Pour transformer un entier en représentation décimale en C, vous avez itoa(), sprintf(), peut-être d'autres. Mais vous pouvez réutiliser le dernier bloc #valeur -> représentation dans b2 avec b2 = 10.

    J'avais mal lu. b2 peut aller jusqu'à 16. Il suffit de modifier une ligne à la fin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #valeur -> représentation dans b2
    m = ''
    while val > 0:
        m = '0123456789ABCDEF'[val % b2] + m
        val = val // b2
     
    print m

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Par défaut
    Merci beaucoup , je comprends mieux maintenant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Windows]accès base de registre windows
    Par Greg01 dans le forum API standards et tierces
    Réponses: 27
    Dernier message: 05/06/2007, 15h14
  2. taille maximale d'une base de donnée paradox
    Par Anonymous dans le forum Paradox
    Réponses: 5
    Dernier message: 14/02/2004, 17h39
  3. sauver une base
    Par phil_java dans le forum Administration
    Réponses: 3
    Dernier message: 07/03/2003, 17h08
  4. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16
  5. Utilisez vous la base de registres ?
    Par gRRosminet dans le forum C++Builder
    Réponses: 8
    Dernier message: 04/06/2002, 13h55

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