J'ai des coefficients d'entrée pour une ligne droite ax + by + c. Je trouve les coordonnées x et y pour trouver l'aire d'un triangle rectangle formé par une ligne passant par les axes x et y. Mais sur le test si a = 1 b = 1 c = -2 L'aire sera 0,5, pas 2.

Comment le réparer?

a = int(input())
b = int(input())
c = int(input())

y = 0*a + b + c
x = a + 0*b + c
sAbc = 1/2 * a*b
print(sAbc)
1
Гыггыг Фидолобабович 23 oct. 2020 à 21:05

2 réponses

Meilleure réponse

Cette question doit être posée sur Math stackoverflow, car il y a des problèmes avec les mathématiques.

Tout d'abord, calculons l'ordonnée à l'origine:

a*0 + b*y + c = 0
y = - c/b

(nous traiterons les lignes verticales et horizontales plus tard) De même, nous calculons l'ordonnée à l'origine:

a*x + b*0 + c = 0
x = - c/a

Enfin, la zone est

# A = abs(0.5 * x * y) = abs(0.5 * (-c/a) * (-c/b)) = abs(0.5 * c * c / a / b)
A = abs(0.5 * c * c / a / b)

Cependant, nous devons traiter séparément les lignes verticales et horizontales.

if a == 0 or b == 0:
   print(0)
else:
   print(abs(0.5 * c * c / a / b))
1
kate-melnykova 23 oct. 2020 à 18:14

Vous utilisez la mauvaise formule.

a = int(input())
b = int(input())
c = int(input())
area = abs((c^2)/(a*b))/2
print(area)
1
Abhinav Mathur 23 oct. 2020 à 18:09