C exposant qui foire ...

Résolu
vautour88 -  
 vautour88 -
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
Configuration: Windows Vista
Internet Explorer 7.0

4 réponses

  1. Droopy_ Messages postés 252 Statut Membre 25
     
    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
  2. Droopy_ Messages postés 252 Statut Membre 25
     
    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
  3. vautour88
     
    en faite j 'ai essayer avec un float mais avec des entiers l 'erreur est toujours la
    0
    1. Droopy_ Messages postés 252 Statut Membre 25
       
      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
      1. Droopy_ Messages postés 252 Statut Membre 25 > Droopy_ Messages postés 252 Statut Membre
         
        Tu noteras que je n'ai pas de puissance, uniquement une division et son modulo.
        0
      2. vautour88 > Droopy_ Messages postés 252 Statut Membre
         
        MERCI ca marche
        0
  4. vautour88
     
    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