Rechercher : dans
Par :

C exposant qui foire ...

Dernière réponse le 18 nov 2008 à 20:01:32 vautour88, le 18 nov 2008 à 19:32:38 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « C exposant qui foire ... » dans :
[Gimp] Corriger la sous-exposition des photos VoirQuand vous prenez une photo avec votre appareil, celui-ci choisit lui-même l'exposition optimale. Le problème, c'est que pour les scènes fort contrastées, on perd inmanquablement des détails. (Typiquement: une pièce sombre avec une fenêtre...
3D Secure / Verified by Visa / SecureCode: Qu'est-ce que c'est ? VoirDepuis octobre 2008, les banques et commerçants en ligne ont commencé à adopter le système 3DSecure pour les paiements sur Internet. Qu'est-ce que c'est ? 3DSecure est appelé "Verified by Visa" chez Visa, et "SecureCode" chez Mastercard. (Les logos...
[Langage C] C/C++ Erreur de segmentation VoirQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux...
Télécharger Visual C++ Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
Les structures en langage C VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...

1

Droopy_, le 18 nov 2008 à 19:46:17

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 !!!

Répondre à Droopy_

2

Droopy_, le 18 nov 2008 à 19:49:39

Tu ne devrais utiliser que des int pour ça...
L'idée, au lieu de faire des puissances, c'est de diviser à chaque tour.

Répondre à Droopy_

3

vautour88, le 18 nov 2008 à 19:51:19

En faite j 'ai essayer avec un float mais avec des entiers l 'erreur est toujours la

Répondre à vautour88

5

Droopy_, le 18 nov 2008 à 19:56:27

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.

Répondre à Droopy_

6

Droopy_, le 18 nov 2008 à 19:57:29

Tu noteras que je n'ai pas de puissance, uniquement une division et son modulo.

Répondre à Droopy_

7

 vautour88, le 18 nov 2008 à 20:01:32

MERCI ca marche

Répondre à vautour88

4

vautour88, le 18 nov 2008 à 19:54:16

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();
}

Répondre à vautour88