begin process at 2008 08 21 19:31:07
1 229 610 membres
423 nouveaux aujourd'hui
14 263 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

BESOIN DE CONSEILS SUR TRANSCRIPTION DE NOMBRE DECIMAL EN BINAIRE


Information sur la source

Description

Voilà j'ai fait une petite fonction qui transcrit un nombre decimal en binaire...
Soyez indulgent je ne suis qu'un debutant... Je souhaiterais juste avoir vos conseils pour m'améliorer... J'ai fait le programme "au feeling" si vous connaissez de meilleur méthode, dites les moi :)

Source

  • void binaire(int clavier)
  • {
  • int binaire;
  • int clavier2=clavier;
  • int compteur=0;
  • int *ptr;
  • // Calculer une 1er fois afin de determiner combien de fois on doit effectuer le calcul
  • while(clavier2!=0)
  • {
  • compteur++;
  • binaire=(clavier2%2);
  • clavier2 /= 2;
  • }
  • // Alocation de mémoire dynamique en fonction du nombre de calcul effectué
  • ptr=(int*)malloc(sizeof(int)*compteur);
  • compteur=0;
  • // Affecter les valeurs à la mémoire dynamique
  • while(clavier!=0)
  • {
  • compteur++;
  • *(ptr+compteur)=(clavier%2);
  • clavier /= 2;
  • }
  • printf("\n");
  • // Afficher le résultat
  • printf(" ");
  • while(compteur!=0)
  • {
  • if(compteur%4==0)
  • {
  • printf(" ");
  • }
  • printf("%d",*(ptr+compteur));
  • compteur--;
  • }
  • }
void binaire(int clavier)
{
   int binaire;
   int clavier2=clavier;
   int compteur=0;
   int *ptr;
   // Calculer une 1er fois afin de determiner combien de fois on doit effectuer le calcul
   while(clavier2!=0)
   {
   	compteur++;
      binaire=(clavier2%2);
      clavier2 /= 2;
   }
   // Alocation de mémoire dynamique en fonction du nombre de calcul effectué
   ptr=(int*)malloc(sizeof(int)*compteur);
   compteur=0;
   // Affecter les valeurs à la mémoire dynamique
   while(clavier!=0)
   {
   	compteur++;
      *(ptr+compteur)=(clavier%2);
      clavier /= 2;
   }
   printf("\n");
   // Afficher le résultat
   printf(" ");
   while(compteur!=0)
   {
   	if(compteur%4==0)
      {
      	printf(" ");
      }
      printf("%d",*(ptr+compteur));
      compteur--;
   }
}
  • signaler à un administrateur
    Commentaire de G0ss3Yn le 22/03/2004 19:38:51

    Salut !
    Je n'est pas testé ton prog, mais juste comme ça vite fait :
    En C : itoa( int, char *, int ) effectue la même opération
    et en C++ : cout<<setbase(2)<< peut le faire aussi :)
    Voilà.... !
    Bye !

  • signaler à un administrateur
    Commentaire de D1mmu le 22/03/2004 23:05:20

    bin je comprends pas ita ça transforme pas un nombre decimal en binaire à ce que je sache? :| ?

  • signaler à un administrateur
    Commentaire de minschk le 23/03/2004 06:46:53

    Hello,

    comme je n'arrivais pas à dormir, je suis dit que ce serait amusant alors voilà le résultat ! :)

    J'espère que cela pourra t'aider ! :)

    @+
    Minschk

    --------------------------------------------------------------
    #include <iostream>
    #include <stdlib.h>

    using namespace std;

    // Conversion Base10 en Binaire sous forme de String
    void binaire(int Base10)
    {  
        int     counter=128;                        // 128 pour partir de la fin du tableau sinon je suis en sens inverse ! :(
        char    *ChaineBinaire;

        ChaineBinaire=(char*)malloc(129);
        memset(ChaineBinaire,'0',128);              // Pour remplir proprement la chaine mais pas obligatoire
        ChaineBinaire[129]=0;                       // Pour terminer la string par un zéro (nécessaire pour le printf uniquement)

        while (Base10!=0)    
        {
            // Bloc au cas où il n'y a pas de memset !
            // if ((Base10%2)==0) InBinary[counter]='0';
            // else InBinary[counter]='1';

            // Bloc au cas où il y a un memset !
            // Plus propre, je pense car on évite le else inutile ! :)
            if ((Base10%2)!=0) ChaineBinaire[counter]='1';

            Base10/=2;
            counter--;
        }

        printf("%s\n",&ChaineBinaire[counter+1]);    // Affichage de châine avec Counter pour ne pas avoir de caractères bizarre, lol ! :)
        free(ChaineBinaire);                         // Pour effacer le vilain pointeur ! :)
    }

    int main(int argc, char *argv[])
    {
        int NombreAConvertir=64565;

        // Comment se prendre la tête et encore ! :)
        binaire(NombreAConvertir);

        // OU BEAUCOUP PLUS SIMPLE
        char    *ChaineBinaire;
        ChaineBinaire=(char*)malloc(129);
        memset(ChaineBinaire,'0',128);              // Pour remplir proprement la chaine mais pas obligatoire
        ChaineBinaire[129]=0;                       // Pour terminer la string par un zéro (nécessaire pour le printf uniquement)

        itoa(NombreAConvertir,ChaineBinaire,2);     // 2 pour Binaire ! :)
        printf("%s\n",ChaineBinaire);               // Affichage de châine avec Counter pour ne pas avoir de caractères bizarre, lol ! :)
        free(ChaineBinaire);                        // Pour éffacer le vilain pointeur ! :)

        system("PAUSE");
        return 0;
    }

  • signaler à un administrateur
    Commentaire de G0ss3Yn le 23/03/2004 12:21:03

    Ha ok, désolé, j'pensais que tu voulais juste afficher en binaire... :)

  • signaler à un administrateur
    Commentaire de D1mmu le 23/03/2004 18:03:58

    Merci bcp de votre aide, j'en prends bonne note :)

  • signaler à un administrateur
    Commentaire de D1mmu le 23/03/2004 19:15:52

    Ah ouai au  passage => minschk t'es baleze :). J'aprecie bcp tes comentaires en + :)

  • signaler à un administrateur
    Commentaire de djl le 24/03/2004 06:35:58

    ChaineBinaire=(char*)malloc(129);
      memset(ChaineBinaire,'0',128);  

    calloc fait la meme chose, et le compilo convrti lui meme les pointeur sur type de base normalement

    ChaineBinaire=calloc(129);

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Boutique

Boutique de goodies CodeS-SourceS