Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1446 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Conversion de base

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conversion de base

n°1985320
elephantdr​eam
Posté le 18-04-2010 à 22:07:26  profilanswer
 

Bonsoir!
Je suis de retour sur ce forum qui a toujours apporté de l'aide!  
Donc voila, mon probleme peut paraitre simple et evident pour certains d'entre vous, mais bon.
 
En fait voila, j'ai un algorithme à ecrire ( il est long, il y a des tableaux à 2 dim...) mais je vais vous parler just de la partie qui me gene!
C'est pour convertir un nombre donner dans une base en une autre base entre 2 et 9.
Mon souci est le suivant, je n'ai j'amer fait de cours sur la conversion des base, et je n'arrive pas à assimiler ce que j'ai trouver sur le net, donc je m'adresse à vous!
je veux just la méthode simple pour passer d'une base à l'autre,  et pire encore, je ne vois pas comment savoir la base de depart d'un nombre donné!  
 
Aidez moi SVP!  
Merci d'avance!

mood
Publicité
Posté le 18-04-2010 à 22:07:26  profilanswer
 

n°1985329
Un Program​meur
Posté le 18-04-2010 à 22:16:40  profilanswer
 

Voir strtol


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1985332
elephantdr​eam
Posté le 18-04-2010 à 22:23:19  profilanswer
 

Excuse moi, car je suis débutant!, strtol je risque de ne pas comprendre grand chose, j'aimerai just une methode mathématique simple pour convertir plz!

n°1985333
elephantdr​eam
Posté le 18-04-2010 à 22:24:34  profilanswer
 

excuse, il y avais un mal entendu!

n°1985334
gilou
Modérateur
Modzilla
Posté le 18-04-2010 à 22:35:38  profilanswer
 

Citation :

convertir un nombre donner dans une base en une autre base entre 2 et 9.

Un nombre, c'est une valeur, ça dépend pas de la base. Ce que tu veux, c'est convertir la chaine S qui représente un nombre dans une base a en une chaine T  qui représente ce même nombre dans une base b.
Faut que tu écrives deux fonctions:
Une qui prend en entrée une chaine et une base, et qui calcule la valeur du nombre correspondant, et une autre qui prend en entrée un nombre et une base et qui calcule la chaine qui représente le nombre dans la base.
Si la première est calcule_valeur(chaine, base) et la seconde est imprime_représentation(nombre, base), tu vas avoir:
T = imprime_représentation(calcule_valeur(S, a), b)

 
Citation :

je ne vois pas comment savoir la base de depart d'un nombre donné

Tu ne peux pas. quand on écrit "10", ca a pour valeur 10 si la base est décimale, 2 si elle est binaire, 8 si elle est octale, etc.
A+,


Message édité par gilou le 18-04-2010 à 22:40:07

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1985336
elephantdr​eam
Posté le 18-04-2010 à 22:41:52  profilanswer
 

Merci gilou pour les explications, mais j'ai encore besoin de quelques eclairssicements!
je suis d'accord sur le fait qu'l faut utiliser deux fonctions, en gros c'est l'enoncé que j'ai:
la machine demandera à l'utilisateur un nombre danc une chaine S, puis la base  
 de ce nombre! ainsi que la base volu, et en sortie, le le programme donnera ce meme nombre dans la base d'arrivée! (donc une chaine T)
tout ça je l'ai compris, mais je ne vois pas les operations mathématiques pour le faire! c'est mon probleme.

n°1985345
elephantdr​eam
Posté le 18-04-2010 à 23:04:15  profilanswer
 

Up aidez moi VP c'est urgent!
Merci encore

n°1985415
gilou
Modérateur
Modzilla
Posté le 19-04-2010 à 11:18:37  profilanswer
 

Je vais pas non plus faire tout le boulot a votre place, mais je veux bien vous donner les algos:
calcule_valeur(T, a):
resultat <- 0
tant que il y a un chiffre a lire dans T faire
resultat <- resultat*a + chiffre lu
fin faire
retourner resultat

 

Exemple: calcul de la valeur de ce qui est noté "312" en base 5
resultat <- 0
On lit le chiffre 3, resultat <- 0*5 + 3 = 3
On lit le chiffre 1, resultat <- 3*5 + 1 = 16
On lit le chiffre 2, resultat <- 16*5 + 2 = 82
retourner 82

 

imprime_représentation(n, b):
chaine <- ""
tant que n >= b faire
chaine <- chaine + "n mod b" (on ajoute a la chaine le chiffre (exprimé dans la base b) représentant la valeur du reste de la division entière de n par b)
n <- n div b  (résultat de la division entière de n par b)
fin faire
si n est non nul,
chaine <- chaine + "n" (on ajoute a la chaine le chiffre (exprimé dans la base b) représentant la valeur n)
fin si
chaine <- Inverse(chaine) (inverse est la fonction qui inverse une chaine. Inverse("abcd" ) renvoie "dcba" )
retourner chaine

 

Exemple: la valeur 253 a exprimer en base 3:
imprime_représentation(253, 3)
chaine <- ""
chaine = "", chaine <- "253 mod 3" (= "1" ), n <- 253 div 3 = 84
chaine = "1", chaine <- "1"+"84 mod 3" (= "0" ), n <- 84 div 3 = 28
chaine = "10", chaine <- "10"+"28 mod 3" (= "1" ), n <- 28 div 3 = 9
chaine = "101", chaine <- "101"+"9 mod 3" (= "0" ), n <- 9 div 3 = 3
chaine = "1010", chaine <- "1010"+"3 mod 3" (= "0" ), n <- 3 div 3 = 1
chaine = "10100", 1 > 0 donc chaine <- "10100"+ "1"
chaine = "101001", chaine <- Inverse("101001" )
retourner "100101"

 

A+,


Message édité par gilou le 19-04-2010 à 11:25:26

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1985568
elephantdr​eam
Posté le 19-04-2010 à 20:13:44  profilanswer
 

Merci gilou! c'est gentil de ta part,  
si je pose des questions sur ce forum, ce n'est pas pour copier des reponses completes, je n'etais pas tres explicite peut etre dans ma demande! je comprend bien que c'est à moi de travailler! merci quand meme! @++


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Conversion de base

 

Sujets relatifs
[JAVA] mystere de conversion string - byte[ ] Signature MS Outlook conversion RTF
[ODBC] DSN pour se connecter à une base SQL[Résolut]Conversion d'un base 10 en base 16
transfert base de données vers PDA et conversion vb en evbConversion d'une base Access en uune base MySQL.
[asm] conversion chaine numerique flottante en base 10[Resolu] Ecrire dans la base de registre/conversion
Conversion Base Access vers SQL... Aidez-moi SVP !Conversion base access en base sql (mysql)
Plus de sujets relatifs à : Conversion de base


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR