Problème valeur chaîne de caractères
Résolu
M-a-t-h
-
M-a-t-h Messages postés 118 Date d'inscription Statut Membre Dernière intervention -
M-a-t-h Messages postés 118 Date d'inscription Statut Membre Dernière intervention -
Bonsoir.
Je dois réaliser une fonction en langage C permettant de convertir un nombre binaire en décimal (base 10).
Voici ce que j'ai tapé:
int bin2dec(binaire b)
{int i, somme;
i=0; somme=0;
while(b[i]!='\0')
{somme=somme*2+b[i];
i++;}
return somme;}
(en sachant que le type "binaire" est constitué d'une chaîne de caractères et qu'elle est correctement initialisée)
Mais apparemment je dois commettre une faute d'écriture car je n'obtiens pas ce que je désire: après des tests, j'en ai conclu que ce serait au niveau de "somme*2+b[i]" car lorsque i=0, au lieu d'obtenir 1 ou 0 avant que la boucle "redémarre", j'obtiens "49" si b[i]=1 et "48" si b[i]=0...
Qu'est-ce qui cloche?
Je dois réaliser une fonction en langage C permettant de convertir un nombre binaire en décimal (base 10).
Voici ce que j'ai tapé:
int bin2dec(binaire b)
{int i, somme;
i=0; somme=0;
while(b[i]!='\0')
{somme=somme*2+b[i];
i++;}
return somme;}
(en sachant que le type "binaire" est constitué d'une chaîne de caractères et qu'elle est correctement initialisée)
Mais apparemment je dois commettre une faute d'écriture car je n'obtiens pas ce que je désire: après des tests, j'en ai conclu que ce serait au niveau de "somme*2+b[i]" car lorsque i=0, au lieu d'obtenir 1 ou 0 avant que la boucle "redémarre", j'obtiens "49" si b[i]=1 et "48" si b[i]=0...
Qu'est-ce qui cloche?
A voir également:
- Problème valeur chaîne de caractères
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
- Chaine radio - Télécharger - Médias et Actualité
3 réponses
Bonsoir,
int + char...
Il y a une conversion implicite entre int et char. Le code ASCII de 0 étant 48, et celui de 1 étant 49, je pense que tu vois ce qui colle pas maintenant. ;)
somme = somme * 2 + b[i]
int + char...
Il y a une conversion implicite entre int et char. Le code ASCII de 0 étant 48, et celui de 1 étant 49, je pense que tu vois ce qui colle pas maintenant. ;)
Pour "convertir" du char au int, tu peux utiliser tout simplemente la soustraction. Par exemple b[i] - '0'
Cdlt,
Cdlt,