Langage C - Débutant - Pow
Fermé
Raphael74
Messages postés
77
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
4 novembre 2012
-
15 sept. 2011 à 11:20
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 15 sept. 2011 à 18:16
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 15 sept. 2011 à 18:16
A voir également:
- Langage C - Débutant - Pow
- Langage ascii - Guide
- Langage binaire - Guide
- Logiciel de programmation pour débutant - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Débuter langage batch windows - Guide
5 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
Modifié par Char Snipeur le 15/09/2011 à 11:28
Modifié par Char Snipeur le 15/09/2011 à 11:28
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
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
Heremion
Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
1 juin 2022
102
15 sept. 2011 à 11:28
15 sept. 2011 à 11:28
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.
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.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
15 sept. 2011 à 11:50
15 sept. 2011 à 11:50
Je n'ai jamais remarqué de problème de conversion en C.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
15 sept. 2011 à 11:36
15 sept. 2011 à 11:36
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éeMais 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);
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
15 sept. 2011 à 11:44
15 sept. 2011 à 11:44
petite remarque, ici nous parlons de C pas de C++. En C il n'y a pas de surcharge, les noms ne sont pas décoré, cf. man pow.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
15 sept. 2011 à 11:47
15 sept. 2011 à 11:47
oups... Visual Studio me perdra ^^
Raphael74
Messages postés
77
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
4 novembre 2012
4
15 sept. 2011 à 11:56
15 sept. 2011 à 11:56
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 ?
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 ?
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
15 sept. 2011 à 11:59
15 sept. 2011 à 11:59
Vu qu'il n'y a pas d'ambiguïté (en C) tes deux int seront automatiquement convertit en double
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
15 sept. 2011 à 12:11
15 sept. 2011 à 12:11
?? quelle différence voi tu entre 64 et 6.400000e+001 ?
C'est juste l'affichage scientifique.
C'est juste l'affichage scientifique.
Raphael74
Messages postés
77
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
4 novembre 2012
4
15 sept. 2011 à 12:20
15 sept. 2011 à 12:20
Oui, c'est vrai :$
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
15 sept. 2011 à 18:16
15 sept. 2011 à 18:16
Bonjour,
Si tu ne veux pas de l'affichage scientifique, tu peux mettre : printf("%f\n\n",resultat);
Si tu ne veux pas de l'affichage scientifique, tu peux mettre : printf("%f\n\n",resultat);