Afficher un cosinus ou sinus [C] - C - Programmation
Marsh Posté le 09-12-2005 à 18:00:56
C'est quoi putnbr ?
|
youpi, chez moi ça marche...
Marsh Posté le 09-12-2005 à 18:06:45
Putnbr est un efonction qui revoi la valeur d'un int
Ok pour ta formule mais si je fais putnbr(valeur d'une variable * cos(90))
90 etant le nombre de degres
Il m'affiche de la mer**
Marsh Posté le 09-12-2005 à 18:10:08
Non c'est bon j'ai trouve
Pour ceux qui aurait le meme probleme :
Il ne faut pas faire putnbr(variable * cos(x))
Mais declarer une autre variable (ex i)
i = variable * cos(x)
putnbr(i) et la ca bug plus
Merci de vos reponses
Marsh Posté le 09-12-2005 à 18:19:32
parceque le spécificateur de format que tu utilise et la fonction cos renvoient des types différents il me semble.
Marsh Posté le 09-12-2005 à 18:26:24
fra0 a écrit : parceque le spécificateur de format que tu utilise et la fonction cos renvoient des types différents il me semble. |
cos renvoie un double et %f spécifie un format de type double, donc c'est bon.
Marsh Posté le 09-12-2005 à 18:29:15
fra0 a écrit : parceque le spécificateur de format que tu utilise et la fonction cos renvoient des types différents il me semble. |
Ah ? Je vois du double partout. C'est grave ?
Marsh Posté le 09-12-2005 à 19:08:20
ReplyMarsh Posté le 09-12-2005 à 19:12:00
fra0 a écrit : ah ok j'ai toujours cru |
Pour scanf(), peut être. Je n'utilise pas scanf().
Marsh Posté le 10-12-2005 à 09:59:12
fra0 a écrit : ah ok j'ai toujours cru |
C'est exact. Mais si tu affiches un double avec "%f" il est automatiquement casté.
Marsh Posté le 10-12-2005 à 10:59:35
Sve@r a écrit : C'est exact. Mais si tu affiches un double avec "%f" il est automatiquement casté. |
Afficher avec "%lf" provoque un comportement indéfini en C90. Il est supporté en C99 et fait pareil que "%f".
Marsh Posté le 13-12-2005 à 11:13:22
Bon je relance le topic car en fait c'est idem avec ma methode putnbr et printf :
M'afficher la rotation d'un point A(Xa, Ya) d'angle r c'est bien ca non :
printf("%lf %lf ", ((Xa * cos(r)) - (Ya * sin(r))), ((Xa * sin(r)) + (Ya * cos(r))))
Et ce type de calcul avec printf ou putnbr me renvoi un nombre bizarre....
Erreur de formule mathematique ou d'affichage de de cosinus/sinus??
Marsh Posté le 13-12-2005 à 11:40:39
mouloud51 a écrit : Bon je relance le topic car en fait c'est idem avec ma methode putnbr et printf : |
Je connais pas la formule donc je peux pas te dire. Mais on a souvent des pb vicieux quand on oublie d'inclure "math.h" parce qu'à ce moment là, le compilo voyant arriver des fonctions inconnues les déclare d'office de type "int" mais il ne dit rien donc on détecte pas l'erreur avant d'avoir le nez dessus !!!
Marsh Posté le 13-12-2005 à 12:06:34
Déjà, tu peux oublier putnbr(), qui n'est pas standard. Plus encore, une recherche sous Google ne me retourne rien, et je n'ai pas compris ta définition.
Ensuite, si ça compile et, plus important, si ça link, c'est que c'est ok de ce côté (l'erreur de débutant avec math.h, c'est d'oublier l'option -lm pour inclure la bibliothèque durant l'édition de lien).
Reste une erreur soit de formule, soit de valeurs des variables utilisées.
Pour la formule, encore là ça va, mais tu n'es pas obligé de mettre autant de parenthèses. C'est pas du LISP
En aérant on améliore la lisibilité, et donc on trace plus facilement les erreurs :
printf("%lf %lf\n", Xa*cos(r) - Ya*sin(r), Xa*sin(r) + Ya*cos(r)); |
Ensuite je ne saurais pas te dire si cette formule est correcte ou non, mais si elle te semble bien, essaie de nous envoyer les définitions et initialisations des variables Xa, Ya et r, qu'on voit un peu à quoi ça ressemble.
Marsh Posté le 13-12-2005 à 13:06:12
Salut Elmoricq j'ai bien compiler avec -lm
Et pour les valeur :
Xa = 1;
Ya = 1;
Et pour une rotation de 274 je dois obtenir :
Xa' = 1.067
Ya' = -0.9278
Pour ma part avec cette formule j'obtient :
Xa' = -0.146756
Ya' = -1.406578
Marsh Posté le 13-12-2005 à 13:16:16
Ca marcherait mieux si tu lui donnais l'angle en radians
#include <stdio.h> |
$ gcc -Wall -ansi -pedantic -lm -O2 test.c |
Marsh Posté le 13-12-2005 à 13:22:31
raaaaaaaaaaaaaaaah oui c'est vrai c'est en radian merci beaucoup Elmoricq
Marsh Posté le 13-12-2005 à 13:27:46
Arf et ca marche toi? car moi ca me change un peu mais ca me donne :
Xa' = 0.103159
Ya' = -1.410446
Marsh Posté le 13-12-2005 à 13:39:07
mouloud51 a écrit : Arf et ca marche toi? car moi ca me change un peu mais ca me donne |
Je t'ai posté un mini-source d'exemple, avec l'output qui va avec.
Marsh Posté le 13-12-2005 à 13:44:10
Oui j'ai bien transformer mon angle et defini PI pourtant.... Ca peut venir de ma ligne de compilaqtion? Moi je compile seulement avec ma lib et avec -lm
Marsh Posté le 13-12-2005 à 13:46:35
Ok c'est bon j'ai trouve le delire : c'est que j'avais declarer l'angle en int alors que je dois renvoyer un double
Merci encore a toi Elmoricq
Marsh Posté le 09-12-2005 à 17:58:09
Bonjour,
Voila j'ai inclu dans mon fichier l'include <math.h> et j'aimerais savoir comment afficher le resultat d'un cosinus car avec un putnbr il me met un resultat incoherent du genre : -14587934879214 Faut -il modifier son putnbr ou y a t-il une fonction systeme qui permette de le faire?
Merci d'avance