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
- Barbara veut calculer automatiquement son budget dans un tableau. citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). - Forum Excel
- Comment calculer une note sur 20 ✓ - Forum Bureautique
- Calculer un acompte de 40 ✓ - Forum Windows
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