- char* baseToBase(char* nombre, char* base_entree, char* base_sortie)
- {
- // On va passer par la représentation décimale pour faire la conversion
- int nombre_decimal=0;
-
- int i, j;
-
- int taillebase_entree = strlen(base_entree);
- printf("Taille de la base d'entree : %d\n", taillebase_entree);
- int taillebase_sortie = strlen(base_sortie);
- printf("Taille de la base de sortie : %d\n", taillebase_entree);
- int taille_nombre = strlen(nombre);
-
- // Conversion vers la base 10
- for(i=0; i<taille_nombre; i++){
- // Le chiffre est donné par la position du caractère dans la base
- int chiffre = strpos(base_entree, taillebase_entree, nombre[i]);
- //printf("Chiffre n %d : %d\n", i, chiffre);
-
- int expo = pow(taillebase_entree, taille_nombre-i-1);
- //printf("Exposant : %d\n", expo);
-
- nombre_decimal += chiffre * expo;
- }
-
- printf("Nombre en decimal : %d\n", nombre_decimal);
-
- i=0;
- char * nombre_final[MAX_CHIFFRES+1];
- int quotient = nombre_decimal;
- // Le nombre est écrit de droite à gauche dans le tableau (à l'envers)
- // On arrangera ca plus tard
- do{
-
- nombre_final[i++] = base_sortie[quotient % taillebase_sortie];
-
- // On a fini ?
- if(quotient < taillebase_sortie)
- break;
-
- quotient = (int)(quotient / taillebase_sortie);
-
-
- if(i > MAX_CHIFFRES){
- printf("Nombre trop grand..\n");
- exit(3);
- }
-
- }while(1);
-
- printf("Nombre final (contient %d chiffres) : \n", i);
- // On remet le nombre a l'endroit
- while(i > 0){
-
- i--;
- putchar(nombre_final[i]);
-
- }
-
- }
char* baseToBase(char* nombre, char* base_entree, char* base_sortie)
{
// On va passer par la représentation décimale pour faire la conversion
int nombre_decimal=0;
int i, j;
int taillebase_entree = strlen(base_entree);
printf("Taille de la base d'entree : %d\n", taillebase_entree);
int taillebase_sortie = strlen(base_sortie);
printf("Taille de la base de sortie : %d\n", taillebase_entree);
int taille_nombre = strlen(nombre);
// Conversion vers la base 10
for(i=0; i<taille_nombre; i++){
// Le chiffre est donné par la position du caractère dans la base
int chiffre = strpos(base_entree, taillebase_entree, nombre[i]);
//printf("Chiffre n %d : %d\n", i, chiffre);
int expo = pow(taillebase_entree, taille_nombre-i-1);
//printf("Exposant : %d\n", expo);
nombre_decimal += chiffre * expo;
}
printf("Nombre en decimal : %d\n", nombre_decimal);
i=0;
char * nombre_final[MAX_CHIFFRES+1];
int quotient = nombre_decimal;
// Le nombre est écrit de droite à gauche dans le tableau (à l'envers)
// On arrangera ca plus tard
do{
nombre_final[i++] = base_sortie[quotient % taillebase_sortie];
// On a fini ?
if(quotient < taillebase_sortie)
break;
quotient = (int)(quotient / taillebase_sortie);
if(i > MAX_CHIFFRES){
printf("Nombre trop grand..\n");
exit(3);
}
}while(1);
printf("Nombre final (contient %d chiffres) : \n", i);
// On remet le nombre a l'endroit
while(i > 0){
i--;
putchar(nombre_final[i]);
}
}