Langage C - Débutant - Pow
Raphael74
Messages postés
91
Statut
Membre
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je tiens tous d'abord avant de commencer, à vous préciser que je débute depuis seulement quelques semaine dans le domaine de programmation, plus particulierement dans le C (:
Voilà, je suis en train de comprendre et retenir de nouvelles fonctions, DE BASE, mais il y en a une qui me gène un peu..
C'est pow, pour calculer le carré d'un nombre, voilà mon programme:
double resultat;
int nombre3;
resultat=0;
nombre3=4;
resultat=pow(nombre3, 3);
printf("%d\n\n", resultat);
En compilant je ne trouve pas le résultat de 4 puissance 3 mais 0. Code::Blocks (oui car je carbure grâce à cet IDE) ne m'indique aucune erreur.
J'en conclu, que ce doit être une erreur de débutant :p
Vos avis, conseil, solutions ?
Merci (:
Je tiens tous d'abord avant de commencer, à vous préciser que je débute depuis seulement quelques semaine dans le domaine de programmation, plus particulierement dans le C (:
Voilà, je suis en train de comprendre et retenir de nouvelles fonctions, DE BASE, mais il y en a une qui me gène un peu..
C'est pow, pour calculer le carré d'un nombre, voilà mon programme:
double resultat;
int nombre3;
resultat=0;
nombre3=4;
resultat=pow(nombre3, 3);
printf("%d\n\n", resultat);
En compilant je ne trouve pas le résultat de 4 puissance 3 mais 0. Code::Blocks (oui car je carbure grâce à cet IDE) ne m'indique aucune erreur.
J'en conclu, que ce doit être une erreur de débutant :p
Vos avis, conseil, solutions ?
Merci (:
5 réponses
-
Salut.
Je ne voyais pas l'erreur jusqu'à ce que je commence à écrire ton programme chez moi.
je pense que résultat vaut bien 64, mais le problème viens de l'affichage avec printf, %d attend un entier et non un double. Utilise %e pour les doubles.
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur -
Bonjour Raphael74,
Il se trouve que la fonction Pow travaille avec des double car sur les int, il y a souvent des problèmes de conversion.
Déclare tes variables en double, et dis-moi si tu as toujours le même problème.
-
Le premier argument se pow doit être un flottant (float, double ou long double), or toi tu utilises nombre3 comme un int, Code::Blocks aurait pu t'indiquer une erreur pour ça !
error C2668: 'pow' : appel ambigu à une fonction surchargée
Mais ta véritable erreur vient du printf, resultat est un double tu dois donc mettre %f
double resultat; int nombre3=4; resultat=pow((double)nombre3,3); printf("%f\n\n", resultat); -
Déjà, merci pour vos réponses (:
Le problème venait bien du printf avec le %d, que j'ai changé en %e, en compilant j'ai presque 64 :P -> 6.400000 + 001
Si j'ai bien compris le nombre 3 ne doit pas être un int mais un double par exemple ? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Si tu ne veux pas de l'affichage scientifique, tu peux mettre : printf("%f\n\n",resultat);