Page 1 of 1

Petit problème

Unread postPosted: 06 Oct 2014, 13:37
by Lu_Lu54
Bonjour à tous j'ai un petit problème sur un programme je comprends pas pourquoi ça marche pas...

Je vous envoie le code plutot que d'essayer de m'expliquer :

Code: Select all
Prgm
Request "xA=",a
Request "yA=",b
Request "xB=",c
Request "yB=",d
Request "xC=",e
Request "yC=",f
√((a-c)²+(b-d)²)→x
√((c-e)²+(d-f)²)→y
√((e-a)²+(f-b)²)→z
Disp "AB=",x
Disp "BC=",y
Disp "AC=",z
Text " "
If x²+y²=z² Then
  Text "ABC est rectangle en B"
EndIf
If x²+y²=z² Then
  Goto testiso
EndIf
If z²+x²=y² Then
  Text "ABC est rectangle en A"
EndIf
If z²+x²=y² Then
  Goto testiso
EndIf
If y²+z²=x² Then
  Text "ABC est rectangle en C"
EndIf
If y²+z²=x² Then
  Goto testiso
EndIf
If x=y=z Then
  Text "ABC est équilatéral"
EndIf
If x=y=z Then
  Goto end
EndIf
Lbl testiso
If x=y Then
  Text "ABC est isocèle en B"
EndIf
If y=z Then
  Text "ABC est isocèle en C"
EndIf
If z=x Then
  Text "ABC est isocèle en A"
EndIf
Lbl end
DelVar a
DelVar b
DelVar c
DelVar d
DelVar e
DelVar f
DelVar x
DelVar y
DelVar z
EndPrgm


Quand je fais ctrl+B ça met "erreur syntaxe" 2 fois de suite et je ne sais pas pourquoi...

Merci pour vos réponses !!

Re: Petit problème

Unread postPosted: 06 Oct 2014, 14:04
by Bisam
Apparemment, tu es habitué(e) à la syntaxe des TI83/84... alors voici quelques trucs pour améliorer ton code :

1) Utilise des variables locales. Pour cela, il suffit de mettre Local a,b,c,x,y,z pour déclarer les variables au début de ton programme. Elles n'existeront ainsi que dans ton programme et pas ailleurs. Il devient inutile de mettre les "Delvar" à la fin.
2) Utilise les "Elseif" quand tuas plusieurs cas qui se ressemblent : cela rend le code plus clair.
3) Évite autant que possible les "Goto" qui, eux, rendent le code difficile à suivre la plupart du temps. Dans ton cas, le seul fait de mettre des "Elseif" permet d'éviter les "goto".

Re: Petit problème

Unread postPosted: 06 Oct 2014, 14:08
by Lu_Lu54
Merci pour les conseils, mais outre ça y'a tout qui marche ??

Re: Petit problème

Unread postPosted: 06 Oct 2014, 14:11
by Bisam
Je ne vois pas d'erreur... mais il se peut que tu aies fait une faute de frappe sur ta calculette et que tu ne l'aies pas fait sur le forum !

Quand la calculette te dit qu'il y a une erreur de syntaxe, quel endroit de ton code renvoie-t-elle le curseur ?

Re: Petit problème

Unread postPosted: 06 Oct 2014, 14:57
by NspireCas
Attention au "carré", il faut mettre une puissance, pas un 2 en exposant.

Re: Petit problème

Unread postPosted: 06 Oct 2014, 16:20
by Bisam
Nspirecas veut dire que si tu utilises le clavier de l'ordinateur, il ne faut pas utiliser la touche située en haut à gauche qui à l'écran fait apparaître un "exposant 2" mais qui ne signifie rien pour la calculette.

Re: Petit problème

Unread postPosted: 07 Oct 2014, 06:38
by Lu_Lu54
oui la c'était pour taper sur l'ordinateur

Sinon, j'ai trouvé l'erreur :
au moment du test pour savoir s'il est équilatéral, j'ai fait ça :
Code: Select all
If x=y=z Then
Text "ABC est équilatéral"
EndIf

or il fallait mettre :
Code: Select all
If x=y and y=z Then
Text "ABC est équilatéral"
EndIf


Merci à tous !

Re: Petit problème

Unread postPosted: 07 Oct 2014, 07:49
by NspireCas
J'aurais du y penser, désolé :(

Re: Petit problème

Unread postPosted: 07 Oct 2014, 13:36
by Bisam
Voici une version simplifiée de ton programme, en utilisant "Local" et des "Elseif".
J'ai aussi utilisé des noms de variables plus explicites donc faciles à comprendre...
Code: Select all
Prgm
Local xa, ya, xb, yb, xc, yc, ab, ac, bc
Request "xA=",xa
Request "yA=",ya
Request "xB=",xb
Request "yB=",yb
Request "xC=",xc
Request "yC=",yc
√((xa-xb)²+(ya-yb)²)→ab
√((xb-xc)²+(yb-yc)²)→bc
√((xc-xa)²+(yc-ya)²)→ac
Disp "AB=",ab
Disp "BC=",bc
Disp "AC=",ac
If ab²+bc²=ac² Then
  Text "ABC est rectangle en B"
ElseIf ac²+bc²=ab² Then
  Text "ABC est rectangle en C"
ElseIf ab²+ac²=bc² Then
  Text "ABC est rectangle en A"
EndIf
If ab=bc and bc=ac Then
  Text "ABC est équilatéral"
ElseIf ab=bc Then
  Text "ABC est isocèle en B"
ElseIf ac=bc Then
  Text "ABC est isocèle en C"
ElseIf ab=ac Then
  Text "ABC est isocèle en A"
EndIf
EndPrgm

Re: Petit problème

Unread postPosted: 31 Oct 2014, 14:04
by Lu_Lu54
Oui d'accord, c'est carrément moins long...