C exposant qui foire ...

Résolu
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

  • Votes
  • Date
  • Date décroissante
  1. 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 !!!
    1. Tu ne devrais utiliser que des int pour ça...
      L'idée, au lieu de faire des puissances, c'est de diviser à chaque tour.
      1. en faite j 'ai essayer avec un float mais avec des entiers l 'erreur est toujours la
        1. 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.
        2. @Droopy_Tu noteras que je n'ai pas de puissance, uniquement une division et son modulo.
      2. 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();
        }