begin process at 2012 02 13 02:17:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CONVERSION D'UN NOMBRE D'UNE BASE QUELCONQUE VERS UNE AUTRE

CONVERSION D'UN NOMBRE D'UNE BASE QUELCONQUE VERS UNE AUTRE


 Information sur la source

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :base, conversion, décimale, hexadecimal, algorithme Niveau :Débutant Date de création :11/04/2007 Vu / téléchargé :17 391 / 848

Auteur : Abrahamz

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Le fonction baseToBase permet de convertir un nombre d'une base quelconque vers une autre, par le biais de la base décimale. Le programme est en console et ne supporte que les entiers naturels.

Source

  • 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]);

	}

}

 Conclusion

Le programme peut etre amélioré en réfléchissant à la taille des tableaux (Si on convertit un nombre de base 10 en base 16, la chaine résultante est toujours plus petite), mais je n'ai pas cherché plus que ça.

Merci de me dire si il y des bugs.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture LES NOMBRES DE KAPREKAR
Source avec Zip Source avec une capture FRACTALE TRES SIMPLE

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip Source avec une capture CONVHTML : UN UTILITAIRE DE CONVERSION POUR FICHIERS HTML par pgl10
CONVERSION D'ENTIERS DANS LES BASES BINAIRE, HEXADECIMALE, O... par alyggattor
Source avec Zip CONVERSION DEC / HEX / BIN (WIN 32) par aardman

Commentaires et avis

Commentaire de bagaz le 27/05/2007 09:21:10

c'est quoi le MAX_CHIFFRES ? il faudrait aussi commencer par l'initialiser.
Toutefois ton code je le trouve interessant.

Commentaire de bagaz le 27/05/2007 09:34:20

desolé quel idiot je fais je viens de le voir dans ton main.c

Commentaire de Abrahamz le 11/11/2007 18:09:18

C'est pas grave, j'aurais du le préciser dans la source online.

Commentaire de Big cent le 13/04/2008 13:16:32

le code est bon mais j'ai des ^petits problèmes pour afficher le resultat car le fichier .exe se ferme automatique à quoi est du cela?

Commentaire de Abrahamz le 14/04/2008 16:40:11

c'est du au fait que je n'ai pas mis de pause a la fin du programme..

Commentaire de Big cent le 25/04/2008 11:27:18

Très beau programme

Commentaire de messmate le 02/12/2008 17:37:25 1/10

C'est quel C ?? Sorry, impossible à faire marcher, trop d'erreurs dans le mien. Pas de portabilité ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

conversion de la partie fractionnaire en base n [ par Alucard ] J'ai vu qu'il y avait beaucoup d'algorithme de la partie entière (int) d'un nombre en n'importe quel base mais je voulais savoir si quelqu'un avait un Algorithme conversion Noms longs <-> Noms courts [ par franck406 ] Je suis à la recherche de l'algorithme qui permet d'obtenir un nom fichier court à partir d'un nom de fichier long comme le fait Dos. Je dois écrire u Conversion décimale => binaire [ par nicolas66 ] Bonsoir tlm,j'ai un pb un une ptite fonction pas très compliquée à mon avis :char * itob( int n ){ char * chaine; int i = 0; while ( n &gt; 0 ) { *(c conversion des données EXCEL vers une base de données ACCESS [ par mallouka ] salut,j'ai besoin d'un logiciel ou un code source permettant de convertir une page XLS afin d'alimenter unedatabase ACCESS.s'il vous pla&#238;t ,j'ai Conversion chaine en entier base 16 [ par Cako19 ] Bonjour, Je souhaiterais convertir une chaine en entier base 16, tout comme le fait la fonction atoi en base 10. Ex: j'ai la chaine "0x013036" et je s Aide Conversion !!! [ par vincfred ] slt jai un programme a faire pour mon licé et je comprend rien le prof ma doné ke le fichier de déclaration jespere ke kelkun pouré maider voici le fi conversion hexadecimal en float [ par wantofirst ] Salutje recherche un code qui me permettra de convertir des resultat hexadecimal en float;ou est ce qu'il y'a une fonction en  C ou C++ qui nous perme algorithme de conversion logarithmique et correllation [ par develdelphi ] Bonjour,J'ai un système embarqué  integrant des fonctionnalités audio et qui a un microcontrolleur Atmel.Voila j'ai des valeurs en decimal sur l'ecran algorithme de conversion de fichier [ par novaghost ] Bonjour, j'aimerais un coup de pouce pour faire un algorithme de conversion de fichier texte. Voila je doit pour exercice, faire un programme qui conv conversion hexadecimal-binaire [ par naddoush ] salut tout le monde, je voudrais bien faire une conversion de l'hexadecimal en binaire, y a-t-il une fonctio que me permet de faire ça? je travaille


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,420 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales