Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 30-09-2018 15:17:48

erichof
Membre
Inscription : 26-08-2011
Messages : 29

avec le logiciel Edupython

from lycee import *
from math import sqrt
xA=demande("abscisse de A")
yA=demande("ordonnée de A")
xB=demande("abscisse de B")
yB=demande("ordonnée de B")
xC=demande("abscisse de C")
yC=demande("ordonnée de C")
c=sqrt((xB-xA)**2 + (yB-yA)**2)
b=sqrt((xC-xA)**2 + (yC-yA)**2)
a=sqrt((xB-xC)**2 + (yB-yC)**2)
if a==b or b==c or c==a :
    print("triangle isocèle")
    if a**2==b**2+c**2 or b**2==a**2+c**2 or c**2==a**2+b**2 :
         print("triangle rectangle")

Bonjour,
pourquoi, le script ci-dessus m'indique-t-il bien que le triangle est rectangle quand A(3;1) B(5;3) et C(2;2) et et qu'il est isocèle quand A(1;5) B(9;-3) et C(2;-2) mais qu'il ne m'indique pas les deux à la fois quand je rentre :
A(0;0) B(3;0 et C(0;3)p ar exemple. Il indique seulement que le triangle est isocèle.
J'ai essayé de voir s'il s'agissait d'un problème d'indentation mais je ne pense pas.
Pourriez-vous m'aider pour qu'il traite aussi le cas d'un triangle isocèle et rectangle.
Merci !
C.

Hors ligne

#2 30-09-2018 22:01:44

Fred
Administrateur
Inscription : 26-09-2005
Messages : 7 035

Re : avec le logiciel Edupython

Bonjour,

  Je n'ai pas testé, mais je pense qu'il s'agit d'un problème de calcul de valeur approché... Les calculs numériques que réalise Python ne sont pas exacts. Quand il calcule une racine carrée, il va donner une valeur approchée de la valeur exacte. En particulier, il y a très peu de chances (en gardant tes notations) que a**2 soit égal à (xB-xC)**2 + (yB-yC)**2, ce qui devrait être le cas.

  Tu peux peut-être essayer en commençant par enlever les racines carrés (par exemple, a=(xB-xC)**2 + (yB-yC)**2 et par tester l'égalité de a avec b+c.

F.

.F.

Hors ligne

#3 01-10-2018 11:55:30

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 948

Re : avec le logiciel Edupython

Re,

Oui, c'est bien ça, mais -en principe - cela n'est pas l'apanage du seul Python.
Le problème est dans la représentation en mémoire des nombre en virgule flottante, c'est valable pour tous les langages.
Il est clair qu'il ne faut pas faire un test d'égalité sur des rationnels ou réels purs...

Voilà ce que dit Python sut ton dernier exemple :


18.0, 17.999999999999996

Modification des déclarations et tests :

c2,b2,a2=(xB-xA)**2 + (yB-yA)**2,(xC-xA)**2 + (yC-yA)**2,(xB-xC)**2 + (yB-yC)**2
if a2==b2 or b2==c2 or c2==a2 :
    print("triangle isocèle")
        if a2==b2+c2 or b2==a2+c2 or c2==a2+b2:
            print("triangle rectangle")

   
triangle isocèle
triangle rectangle

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#4 01-10-2018 14:23:38

C.
Invité

Re : avec le logiciel Edupython

Bonjour,
merci beaucoup !
J'ai compris.
C.

Pied de page des forums