C exposant qui foire ...

Résolu/Fermé
vautour88 - 18 nov. 2008 à 19:32
 vautour88 - 18 nov. 2008 à 20:01
Bonjour, j'ai une erreur dans ce programme qui est censé traduire un nombre binaire introduit par l utilisateur et lui ressortir ca valeur décimal.

J'ai une erreur "illegal use of floating point" à cette ligne
nbb+=(nb%pow(10,cpt))*(pow(2,cpt));

#include <stdio.h>
#include <conio.h>
#include <math.h>
void main (void)
{
int cpt, nb;
double nbb=0;
printf("entrez un nombre en binaire : ");
scanf("%d",&nb);
for(cpt=0;((nb/(pow(10,cpt)))>1) || ((nb/(pow(10,cpt)))==1);cpt++)
{
nbb+=(nb%pow(10,cpt))*(pow(2,cpt));
}
printf("\n %d egal en deci %.0f",nb,nbb);
getch();
}


merci a tous

4 réponses

Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25
18 nov. 2008 à 19:46
Whaou, c'est hyper compliqué. T'as vraiment besoin de tout ça ?
C'est une simple conversion d'entiers, je vois pas pourquoi ça doit passer par des float !!!
0
Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25
18 nov. 2008 à 19:49
Tu ne devrais utiliser que des int pour ça...
L'idée, au lieu de faire des puissances, c'est de diviser à chaque tour.
0
en faite j 'ai essayer avec un float mais avec des entiers l 'erreur est toujours la
0
Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25
18 nov. 2008 à 19:56
Voici l'algo, je te laisse le coder :-)

Tu lis nbin (scanf)
Tant que nbin > 0
    chiffre = nbin modulo 10
    ndec = (ndec * 2) + chiffre
    nbin = nbin / 10
Tant que fin


Quand on sort de la boucle, ndec contient ton nombre en décimal.
À noter : en C le modulo c'est l'opérateur %
N'oublie pas de vérifier que l'utilisateur ne rentre pas n'importe quoi.
0
Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25 > Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009
18 nov. 2008 à 19:57
Tu noteras que je n'ai pas de puissance, uniquement une division et son modulo.
0
vautour88 > Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009
18 nov. 2008 à 20:01
MERCI ca marche
0
l erreur est toujours presente

#include <stdio.h>
#include <conio.h>
#include <math.h>
void main (void)
{
int cpt, nb,nbb=0;
printf("entrez un nombre en binaire : ");
scanf("%d",&nb);
for(cpt=0;((nb/(pow(10,cpt)))>1) || ((nb/(pow(10,cpt)))==1);cpt++)
{
nbb+=(nb%pow(10,cpt))*(pow(2,cpt));
}
printf("\n %d egal en deci %d",nb,nbb);
getch();
}
0