Page 1 of 2

erreur dans le programme

Unread postPosted: 30 Apr 2013, 11:43
by Guillaume17
Bonjour,

J'ai des erreurs dans le programme suivant mais je ne vois pas lesquels.

Image

Merci de votre aide

Guillaume

Re: erreur dans le programme

Unread postPosted: 30 Apr 2013, 11:46
by Bisam
Il faut écrire les multiplications entre deux variables... sinon, la calculette croit que c'est une seule variable !
Il faut donc remplacer ta ligne
Code: Select all
B²-4AC->D

par
Code: Select all
B²-4A*C->D

Re: erreur dans le programme

Unread postPosted: 30 Apr 2013, 12:02
by Guillaume17
Merci mais il y a une autre erreur

Re: erreur dans le programme

Unread postPosted: 30 Apr 2013, 12:13
by Levak
A part le fait que les flèches "->" ne sont pas deux caractères mais un seul, je ne vois pas, ce programme devrait marcher sur n'importe quelle z80.
En parlant de z80, tu en as bien une ? En effet, tu as posté dans la section Nspire ce qui n'est bien sûr pas une z80, ce qui me permet de poser cette question : quelle calculatrice as-tu ?

Re: erreur dans le programme

Unread postPosted: 30 Apr 2013, 12:26
by Bisam
Il manque un "End" à la fin... il y a 2 "If" imbriqués et le premier n'a pas son "End".

Re: erreur dans le programme

Unread postPosted: 30 Apr 2013, 12:31
by Guillaume17
J'ai récupérer ce programme sur internet et impossible de trouver l'erreur.

Autrement je suis allé trop vite en postant j'ai une calculatrice TI-82

Re: erreur dans le programme

Unread postPosted: 30 Apr 2013, 12:49
by Bisam
J'ai replacé le topic au bon endroit, à savoir dans la catégorie Z80.

À part ça, je viens seulement de remarquer que ce programme est complètement faux, mathématiquement parlant !! Même si on corrige la syntaxe, il donnera des résultats aberrants, voire des erreurs tout court...

Voici le programme entièrement corrigé :
Code: Select all
ClrHome
Disp "AX²+BX+C=0"
Prompt A,B,C
ClrHome
B²-4A*C->D
If D>0
Then
  (-B-rac(D))/(2A)->E
  (-B+rac(D))/(2A)->F
  Disp "2 solutions"
  Disp E
  Disp F
Else
  If D=0
  Then
    -B/(2A)->S
    Disp "1 solution"
    Disp S
  Else
    Disp "Pas de solution"
  End
End


On peut bien sûr simplifier et s'occuper de nettoyer les variables utilisées, mais ce n'est pas le propos ici.
J'ai décalé (on dit "indenté") les lignes à certains endroits pour que l'on voit mieux le début et la fin de chaque bloc d'instructions.

Re: erreur dans le programme

Unread postPosted: 30 Apr 2013, 13:06
by Guillaume17
ok merci

Re: erreur dans le programme

Unread postPosted: 30 Apr 2013, 13:11
by nikitouzz
Il y a plusieurs possibilités d'erreur :
- soit tu oublies une commande
- soit, ce qui est probable, tu marques le mauvais "-". Je te refais le programme :

Code: Select all
:Prompt A,B,C
:BB-4AC→D
:If D=0
:then
:disp "une solution :"
:disp -B/(2A) (attention ici devant le B c'est un petit moins par un gros)
:End
:If D>0
:disp "2 solutions :"
:disp (-B-sqrt(D))/(2A) (pareille ici, le moins devant le B est un petit moins)
:disp (-B+sqrt(D))/(2A) (pareille ici, le moins devant le B est un petit moins)
:End
:If D<0
:Disp "pas de solution"


voila

ps : Bisam, on peut tres bien marqué AC pour A*C c'est la même chose.

EDIT : Le code de bisam est très bien aussi même si il est plus long à écrire.

Re: erreur dans le programme

Unread postPosted: 30 Apr 2013, 13:56
by Bisam
nikitouzz wrote:ps : Bisam, on peut tres bien marqué AC pour A*C c'est la même chose.

Je le sais bien : pour une z80, c'est pareil parce que les variables ne font qu'une lettre. Mais comme il a posté dans le topic Nspire au départ, je ne pouvais pas le deviner. C'est la première chose qui m'a sauté aux yeux... avant même l'erreur grossière de maths !
Ceci étant, j'aurais pu voir que la syntaxe (avec ses "End" et non "Endif") était celle d'une Z80 et non d'une Nspire)

Bien vu cependant pour l'histoire du "-" devant les B, c'est important à signaler !