Pile de double

Résolu
cs_Pof Messages postés 78 Date d'inscription lundi 11 février 2002 Statut Membre Dernière intervention 7 février 2006 - 10 janv. 2006 à 13:25
cs_Pof Messages postés 78 Date d'inscription lundi 11 février 2002 Statut Membre Dernière intervention 7 février 2006 - 10 janv. 2006 à 13:55
Bonjour ! voilà j'ai un petit problème avec les std::stack :

std::stack<double> stack;
stack.push(20);
stack.push(10);

[...]

double a = stack.top();
printf("%d\n", a);
stack.pop();
double b = stack.top();
printf("%d\n", b);
stack.pop();
printf("%d\n", a+b);

et j'obtiens à l'affichage,

10
20
20

alors que le dernier devrait afficher 30... autre exemple, si je stocke 1000 dans la pile et que je fais un log10 sur stack.top(), j'obtiens une valeur extrêmement bizzare (alors que je devrais avoir 3 non ?)... Comment puis-je faire pour récupérer un double utilisable à partir de la pile ?

Merci d'avance !

3 réponses

cs_Pof Messages postés 78 Date d'inscription lundi 11 février 2002 Statut Membre Dernière intervention 7 février 2006 1
10 janv. 2006 à 13:55
trouvé ! pour les double c'est %lf (j'avais déjà essayé %f mais ça donnait des résultats pire que le %d donc je savais pas trop quoi ^^)

merci !
3
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
10 janv. 2006 à 13:42
C'est l'affichage qui n'est pas bon :
double val = 3.1415926
printf("%lf\n", val);
0
ricky78 Messages postés 126 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 11 juillet 2006
10 janv. 2006 à 13:45
bonjour

essaye d'ecrire dans la pile *
stack.push(20.0);
stack.push(10.0);

pour vraiment ecrire un double puis a l'affichage chande tes %d en %f

TOCHE
0
Rejoignez-nous