trouver le rayon d'1 cercle | Conversion int -> double

trouver le rayon d'1 cercle | Conversion int -> double - C++ - Programmation

Marsh Posté le 13-12-2002 à 01:38:58    

Bonjour,
 
Je donne a ma fonction les cordonnees de 2 points qui doivent servir a tracer un cercle en sachant que le 1er point est le centre et le 2eme point est sur le cercle lui meme.
 
Trouver les rayon c'est pas bien dur avec pythagore.
 
le pbr c'est que je dois utiliser la fonction sqrt() qui demande en parametre un double alors que les coordonnees des points sont des int.
 
Comment faire marcher ca? C'est possible de passer les int en double?
 
Merci

Reply

Marsh Posté le 13-12-2002 à 01:38:58   

Reply

Marsh Posté le 13-12-2002 à 01:47:05    

la conversion est implicite de int vers double. Donc tu peux passer un int à sqrt sans plus de façons.

Reply

Marsh Posté le 13-12-2002 à 02:00:54    

C'est bien ce que je me disais mais apparement le compilateur il est pas du meme avis :heink:  
 

Citation :

cercle.cpp:117: call of overloaded `sqrt(int)' is ambiguous
C:/MinGW/include/math.h:148: candidates are: double sqrt(double)
C:/MinGW/include/c++/3.2/cmath:465:                 long double std::sqrt(long  
   double)
C:/MinGW/include/c++/3.2/cmath:461:                 float std::sqrt(float)


 
Voici le code:

Citation :

int x1,y1,x2,y2;
double r;
 
i->getP1()->getCoord(&x1,&y1);
i->getP2()->getCoord(&x2,&y2);
r = round(sqrt((x2-x1)^2 + (y2-y1)^2));


 
 :??:

Reply

Marsh Posté le 13-12-2002 à 02:11:10    

dans ton cas effectivement, il y a ambiguite => il faut caster en double par exemple
 

Code :
  1. r = round(sqrt(double((x2-x1)^2 + (y2-y1)^2)));


Message édité par wpk le 13-12-2002 à 02:11:24
Reply

Marsh Posté le 13-12-2002 à 02:39:29    

Yeeee t'es trop fort! ca marche! :sol:  
 
par contre tu pourrais m'expliqer pourquoi 2^2 n'est pas egal a 2*2 :??:  
 
J'ai du re-ecrire ma commande comme ca pour que ca marche:

Citation :

r = round(sqrt(double((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))));

Reply

Marsh Posté le 13-12-2002 à 04:20:06    

^ pour puissance n'existe pas en C++
 
si tu veux faire puissance de 2 de x
tu fais x*x, c'est beaucoup plus simple et
la solution la plus rapide.
tu peux l'ecrire sous forme d'une fonctiom
inline float square(float t) (return t*t);
 
Si tu veux faire des puissances complexes
(puissances de flottants) il doit y avoir pow()
qui doit etre defini dans math.h
 
LeGreg


---------------
voxel terrain render engine | animation mentor
Reply

Marsh Posté le 13-12-2002 à 08:13:31    

ok, merci a tous les deux pour vos reponses :jap:


Message édité par IvanleFou le 13-12-2002 à 08:13:47
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed