Decodage en C

Signaler
Messages postés
5
Date d'inscription
mercredi 11 février 2009
Statut
Membre
Dernière intervention
13 mars 2009
-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
-
Salut a tout le monde.........

 je besoin de code complet de programme que permet de  faire la convertion d'un nombre de nem porte quelle base vers la base 10 et vice-versa en langage C. merci

1 réponse

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
44
Salut

"On ne demande pas un programme tout fait, on ne demande que de l'aide sur un problème concret." - Règlement.

Je ne vais donc pas te donner un code complet, mais t'expliquer une manière de faire ton programme.

Pour la base X en base 10:
Tu crées une variable qui contiendra le résultat, que tu mets à 0 au départ (appelons cette variable resultat)
Tu parcours ta chaine de caractères du dernier symbole au premier, et en comptant de 0 à (taille - 1) (appelons cette variable i)
Tu récupères la valeur décimal du caractère en question (pour les chiffres de 0 à 9, c'est pareil, A => 10, B => 11...)
Tu multiplies cette valeur par X puissance i (X étant la base originale), et tu augmentes resultat d'autant.

Pour la base 10 en base X:
1) Tu trouves le nombre de caractères que ton nombre prendras afin de créer ton tableau (oublie pas qu'il faut une case de plus pour le '\0')
Pour cela, tu boucles en partant de i = 1 tant que ton nombre original est supérieur ou égal à X puissance i
Tu crées un tableau de caractères d'une longueur de i (+1 pour le '\0' à la fin)
2) Recherche du nombre en base X:
Tu crées une variable (qu'on appellera var) avec comme valeur celle du nombre en base 10
Tu parcours ton tableau de l'avant dernière case à la première.
Tu mets dans la case en cours le symbole correspondant à var%X.
Tu diminue var de var%X.
Tu divises var par X
Tu passes à la case d'après

C'est pas du code, ni même du pseudo-code, mais c'est déjà largement assez, normalement.

Krimog :
while (!succeed = try()) ;