C exposant qui foire ...
Résolu
vautour88
-
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
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
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 !!!
C'est une simple conversion d'entiers, je vois pas pourquoi ça doit passer par des float !!!
Tu ne devrais utiliser que des int pour ça...
L'idée, au lieu de faire des puissances, c'est de diviser à chaque tour.
L'idée, au lieu de faire des puissances, c'est de diviser à chaque tour.
Voici l'algo, je te laisse le coder :-)
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.
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.
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();
}
#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();
}