'c' je vois pas mon erreur?

(Cliquez-ici pour accéder à la version originale de cette discussion avec couleurs et images)







Posted by: raito123

Bonsoir,
ben voilà un code facile en 'c'.
je sais pas pourquoi ça marche pas : ça affiche toujours la valeur 'faux' ou '0' à la place du racine carré
Code:
#include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char argv[]) { double nombre = 0, resultat = 0; printf("le nombre : "); scanf("%ld", &nombre); resultat = sqrt(nombre); printf("%ld\n", resultat); getchar(); system("pause"); return 0; }

bah voilà si quelqu'un voit quelques chose???
merci d'avance!!



Posted by: lapras

Affiche un double donc enleve le %ld



Posted by: raito123

Citation:
Posté par lapras
Affiche un double donc enleve le %ld

Re lapras ,
je n'ai pas compris ce que tu veux dire par là!!!!(j'ai pas compris^^)
Si j'enleve le %ld ça ne va rien afficher, non?



Posted by: lapras

en fait je voulais dire que resultat n'est pas un entier, il faut utiliser le sybole pour afficher les doubles et non le symbole %ld.
je me rappelle plus a quoi correspond le symbole d'affichage d'un double



Posted by: raito123

Citation:
Posté par lapras
en fait je voulais dire que resultat n'est pas un entier, il faut utiliser le sybole pour afficher les doubles et non le symbole %ld.
je me rappelle plus a quoi correspond le symbole d'affichage d'un double

Oui, j'avais pas fait attention c'est avec %lf
bonne nuit



Posted by: Dominique Lefebvre

printf("%f\n", resultat);

ça devrait le faire....



Posted by: raito123

Citation:
Posté par Dominique Lefebvre
printf("%f\n", resultat);

ça devrait le faire....

Non ça donne pas il faut ajouter un 'l' qui donne '%lf'



Posted by: Patastronch

Citation:
Posté par raito123
Non ça donne pas il faut ajouter un 'l' qui donne '%lf'


Désolé quand j'entends une annerie je me dois de reagir. Petit rappel de cours :

Code:
TYPE : d/i entier décimal signé o entier octal non signé u entier décimal non signé x entier hexadécimal non signé X entier hexadécimal non signé en majuscules f réel de la forme [-]dddd.ddd e réel de la forme [-]d.ddd e [+/-]ddd E comme e mais l'exposant est la lettre E g format e ou f suivant la précision G comme g mais l'exposant est la lettre E c caractère s affiche les caractères jusqu'au caractère nul '\0' p pointeur MODIFICATEUR : h un entier de type short (d,i,o,u,x,X) l un entier de type long (d,i,o,u,x,X) L un réel de type long double (e,E,f,g,G)


Ne pas confondre les 2 merci, de plus la présence d'un modificateur n'est pas obligatoire, donc %f fait tres bien l'affaire.
Dans tous les cas pour un réel c'est L le modificateur et non l. Mais en aucun cas "il faut rajouter un l".



Posted by: raito123

Citation:
Posté par Patastronch
j'entends une annerie

Ah bon une annerie !!!
dsl je ne savais pas !!!
en tout cas j'ai essayé avec '%f' mais ça n'as pas marché!!!
enfin si c'est une annerie bah je te dit que je viens de prendre mes premiers cours sur c donc normal!!!

ps=merci pour le petit cours


Citation:
TYPE :

d/i entier décimal signé
o entier octal non signé
u entier décimal non signé
x entier hexadécimal non signé
X entier hexadécimal non signé en majuscules
f réel de la forme [-]dddd.ddd
e réel de la forme [-]d.ddd e [+/-]ddd
E comme e mais l'exposant est la lettre E
g format e ou f suivant la précision
G comme g mais l'exposant est la lettre E
c caractère
s affiche les caractères jusqu'au caractère nul '\0'
p pointeur


MODIFICATEUR :

h un entier de type short (d,i,o,u,x,X)
l un entier de type long (d,i,o,u,x,X)
L un réel de type long double (e,E,f,g,G)
[/CODE]













-