Decodage en C

gilsondjy Messages postés 5 Date d'inscription mercredi 11 février 2009 Statut Membre Dernière intervention 13 mars 2009 - 12 févr. 2009 à 01:48
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 12 févr. 2009 à 10:50
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

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 48
12 févr. 2009 à 10:50
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()) ;
0
Rejoignez-nous