Bonjour je suis en spécialité NSI et nous devons faire un programme avec certaines formules sur python. Voici le programme posant problème, nous avons réussi avec un camarade à faire le reste:
def long(xa,xb,ya,yb,ab):
ab=(((xb-xa)**2)+((yb-ya)**2))**0.5
return ab
def angle(ab,bc,ca,ang):
if (ab**2)+(bc**2)==ca**2:
return int(1)
else:
return int(0)
xa=float(input("Abscisse de A"))
ya=float(input("Ordonnée de A"))
xb=float(input("Abscisse de B"))
yb=float(input("Ordonnée de B"))
xc=float(input("Abscisse de C"))
yc=float(input("Ordonnée de C"))
xd=float(input("Abscisse de D"))
yd=float(input("Ordonnée de D"))
ab=long(xa,ya,xb,yb,ab)
bc=long(xb,yb,xc,yc,bc)
cd=long(xc,yc,xd,yd,cd)
da=long(xd,yd,xa,ya,da)
dca=long(xc,yc,xa,ya,dca)
dbd=long(xb,yb,xd,yd,dbd)
ang=ang+angle(da,ab,dbd,ang)+angle(ab,bc,dca,ang)+angle(bc,cd,dbd,ang)+angle(cd,da,dca,ang)
print(ang)
Ce programme devrait trouver le nombre d'angle droit dans un quadrilatère ABCD, mais malheureusement il ne trouve que 1 angle.
Merci d'avance pour votre aide
Bonjour,
tu devrais t'estimer heureux qu'il en trouve déja un !!
vu que "ang" n'a aucune valeur au départ (ça ne veut pas du tout dire 0, ça veut dire "pas définie") il va avoir du mal à calculer ton résultat !!
et de toute façon à quoi sert le paramètre d'appel "ang" dans la fonction angle(ab,bc,ca,ang) ???
on n'en fait rien du tout !
même remarque pour :
long(xa,xb,ya,yb,ab)
ab n'est pas un paramètre d'appel (et la première chose qu'on fait c'est en détruire la valeur) !
c'est une variable interne qui sert à calculer ce qu'on va renvoyer en sortie de la fonction !!
excusez moi, j'ai oublié de vous mettre une partie du programme
j' ai aussi les variables:
ab=float(0)
bc=float(0)
cd=float(0)
da=float(0)
dca=float(0)
dbd=float(0)
ang=int(0)
Encore désolé je suis un peu fatigué
ça ne change rien du tout au fait que ces paramètres d'appels là sont en trop dans toutes tes fonctions
faut pas confondre paramètre d'appel et valeur retournée par la fonction !!
en tout cas je pense avoir trouvé bien plus significatif comme erreur qu'un paramètre d'appel qui ne sert à rien :
def long(xa,xb,ya,yb):
appelée avec
ab=long(xa,ya,xb,yb)
ce mélange entre des coordonnées conduit à des calculs qui ne riment à rien !!
en corrigeant la définition en accord avec l'ordre dans lequel sont les paramètres lors des appels ça marche (essayé avec un carré incliné)
(j'ai viré les paramètre inutiles, je n'ai pas essayé de les remettre)
faut voir aussi la précision des comparaisons "==" car tout calcul sur des float est forcément une approximation
il serail plus sage de garder les calculs des carrés des distances plutot que d'en extraire les racines carrées pour les élever au carré ensuite !!
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :