Conversion decimal en binaire sans connaitre la taille du nombre

kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 - 5 févr. 2003 à 16:47
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009 - 9 mars 2005 à 12:30
Est ce que quelqu'un pourrait m'aider. Voici un algo qui convertit un nombre biaire en decimal :
bin_digits est defini avec une taille de 10. Or j'aimerai definir bin_digits sans une taille precise. Sa taille serait definie en saisissant la valeur en binaire.
Si vous avez un algo a me proposer merci d'avance
kobee12

# include <string.h> /* pour strlen */
# include <stdio.h> /* pour printf */
# include <stdlib.h> /* pour EXIT_SUCCESS */

typedef char * string ;

/* proto */ int bins2dec (string bs, unsigned size) ;

int main (void)
{ string bin_digits[10];
int val = 0;

printf("saisir le nombre binaire :");
fflush(stdin);
gets(bin_digits);
val = bins2dec (bin_digits, strlen (bin_digits)) ;
printf ("valeur : %d\n", val) ;
getch();
return EXIT_SUCCESS ; }

int bins2dec (string bs, unsigned size) { int val 0, power 1 << size ;
while (power >>= 1)
{ val += ((*bs++) - '0') * power ; }
return (val) ;
}

1 réponse

lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
9 mars 2005 à 12:30
bon je suppose qu'il y a plus simple mais voilà un algo qui fonctionne corretement.



#include



int main(void)

{

char num2b[256];

int nombre=0,size,factor=1;

bool bin=true;

cout << "taper un nombre binaire:\n";

cin>>num2b;

size=strlen(num2b);

size--;

for (int i=0;i<=size;i++)

{

if (((num2b[size-i]-48)!=0)&&((num2b[size-i]-48)!=1)) {bin=false;break;}

nombre+=(num2b[size-i]-48)*factor;

factor*=2;

}



if (bin)

cout <<num2b<<" = "<<nombre<<endl;

else cout << "ce nombre n'est pas un nombre binaire \n"<<endl;

system("PAUSE");

return 0;

}
0
Rejoignez-nous