Conversion decimal binaire sans connaitre la taille du nombre
kobee12
Messages postés153Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention31 octobre 2006
-
5 févr. 2003 à 21:06
cs_C2S
Messages postés38Date d'inscriptionvendredi 7 février 2003StatutMembreDernière intervention20 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:
Conversion decimal binaire sans connaitre la taille du nombre
cs_C2S
Messages postés38Date d'inscriptionvendredi 7 février 2003StatutMembreDernière intervention20 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;