Conversion decimal 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 à 21:06
cs_C2S Messages postés 38 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 20 mars 2005 - 7 févr. 2003 à 19:55
Est ce que quelqu'un pourrait m'aider. Voici un algo qui convertit un nombre binaire 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) ;
}
A voir également:

1 réponse

cs_C2S Messages postés 38 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 20 mars 2005
7 févr. 2003 à 19:55
Salut!!

si c ta fct Bin2Dec qui merde, alors je peux te proposer ma version :

int Bin2Dec (char* Nbre, int Size)
{
int Res = 0;
int i;
int poids = 1;
for (i=0; i<Size, ++i)
{
Res += Nbre[i] * poids;
poids *= 2;
}
return Res;
}

Voila, je penses que ca marche. je vois pas a koi ca sert ton typedef char* string...
moi ca me gene pq quand tu déclare un "string" ca revioent a declarer une variable du type
char* Var[12]
autrement dit un pointeur sur chaine de caratere ou si tu prefere un tableau de chaines de caracteres...... ce qui explique ton *bs++ etc...

je penses que si tu degage tout ces "string" et tu met des chars a la place ca marchera mieux...

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

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

int main (void)
{
char 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 (char* bs, unsigned size)
{
int Res = 0;
int i;
int poids = 1;
for (i=0; i<Size, ++i)
{
Res += Nbre[i] * poids;
poids *= 2;
}
return Res;

}

Bon courage, et essaye le C++
0
Rejoignez-nous