Calculer l'aire d'un triangle ABC en C
Résolu
973HLM
-
nar6du14 Messages postés 506 Statut Membre -
nar6du14 Messages postés 506 Statut Membre -
Bonjour,
j'aimerais calculer l'air d'un triangle ABC quelconque a l'aide d'une fonction aire.
j'ai au préalable une structure point et une structure triangle.
voila ce que je fais:
ça ne fonctionne pas... aidez moi s'il vous plait :)
j'aimerais calculer l'air d'un triangle ABC quelconque a l'aide d'une fonction aire.
j'ai au préalable une structure point et une structure triangle.
voila ce que je fais:
float surface (point A, point B, point C) {
float aire;
return aire= 0.5 *((B.x)-(A.x))((C.y)-(A.y)) - ((C.x)-(A.x))((B.y)-(A.y));
}
ça ne fonctionne pas... aidez moi s'il vous plait :)
A voir également:
- Calculer l'aire d'un triangle ABC en C
- Comment calculer la moyenne sur excel - Guide
- Comment calculer un total sur excel - Guide
- Freebox triangle - Forum Téléviseurs
- Triangle attention word ✓ - Forum Loisirs / Divertissements
- Roland souhaite calculer le montant total des ventes de son magasin. le fichier contient, pour chaque produit, la quantité vendue et le prix unitaire. calculez le montant total des ventes. ✓ - Forum Excel
3 réponses
je ne connais pas le C mais ça doit être la dernière ligne qui pose problème car tu luit dit de retourner aire avant même lui avoir assigné le résultat. essaie ça plutôt :
float surface(point A, point B, point C) {
return 0.5 *((B.x)-(A.x))((C.y)-(A.y)) - ((C.x)-(A.x))((B.y)-(A.y));
}
ça te fait économiser une variable
float surface(point A, point B, point C) {
return 0.5 *((B.x)-(A.x))((C.y)-(A.y)) - ((C.x)-(A.x))((B.y)-(A.y));
}
ça te fait économiser une variable
Salut 973HLM,
Je pense que ceci marche mieux :
- en C, l'opérateur de multiplication est *, il faut le mentionner explicitement, la juxtaposition de parenthèses n'étant pas comprise comme un produit
- mettre des parenthèses autour de (B.x) est inutile
- en revanche, en mettre pour distinguer ce qui doit être multiplié de ce qui doit être soustrait est mieux
- ta formule omet le calcul de la valeur absolue, qui d'après https://fr.wikipedia.org/wiki/Aire_d%27un_triangle#.C3.80_partir_des_coordonn.C3.A9es_des_sommets doit être faite avant multiplication par 1/2
Sous toutes réserves, car mes souvenirs de géométrie remontent un peu :-)
Dal
Edit : fabs est à utiliser, présent dans math.h (et non abs, qui fonctionne avec des entiers : http://www.cplusplus.com/reference/cmath/fabs/)
Je pense que ceci marche mieux :
float surface(point A, point B, point C)
{
return 0.5 * fabs( ((B.x - A.x) * (C.y - A.y)) -
((C.x - A.x) * (B.y - A.y)) );
}
- en C, l'opérateur de multiplication est *, il faut le mentionner explicitement, la juxtaposition de parenthèses n'étant pas comprise comme un produit
- mettre des parenthèses autour de (B.x) est inutile
- en revanche, en mettre pour distinguer ce qui doit être multiplié de ce qui doit être soustrait est mieux
- ta formule omet le calcul de la valeur absolue, qui d'après https://fr.wikipedia.org/wiki/Aire_d%27un_triangle#.C3.80_partir_des_coordonn.C3.A9es_des_sommets doit être faite avant multiplication par 1/2
Sous toutes réserves, car mes souvenirs de géométrie remontent un peu :-)
Dal
Edit : fabs est à utiliser, présent dans math.h (et non abs, qui fonctionne avec des entiers : http://www.cplusplus.com/reference/cmath/fabs/)
hum fais le calcul mathématiquement avant puis transcrit le en code et ça va fonctionner et regarde bien comment tu agences les parenthèses dans ton code.
le 0.5 multiplie t'il tout le reste ou bien uniquement ((B.x)-(A.x))((C.y)-(A.y));
s'il multiplie tout, mets une parenthèse ouvrante juste avant le "*" qui est après "0.5" et fermante juste avant le ";" qui marque la fin de l'instruction
le 0.5 multiplie t'il tout le reste ou bien uniquement ((B.x)-(A.x))((C.y)-(A.y));
s'il multiplie tout, mets une parenthèse ouvrante juste avant le "*" qui est après "0.5" et fermante juste avant le ";" qui marque la fin de l'instruction