Posté le 15/02/2010 à 12:33 Membre depuis le 15/02/2010, 6 messages
Bonjour,
Dans un programme (ti 89) j'ai une boucle while ... endwhile à l'intérieur de laquelle se trouve un if ... then ... endif.
Le code affiche dans un tableau (pxlligne) via un pxltext des informations que l'utilisateur a rentrés via un request .
Problème : lorsque la condition du if est vérifié, tous ce qui était déjà affiché s'efface.



[source=plain]input x
effdessin
effgraph
effercran
pxlligne 25,0,25,158
pxlligne 50,0,50,158
1->i
while i<=x
entpréc(i*(158/(x+1)))->a
pxlligne 0,a,76,a
i+1->i
endwhile
pxltexte "e.i.",2,2
pxltexte "inter",27,2
pxltexte "e.f.",52,2
1-> i
9999->xmax
while i->x
request "coefficient",y,off
request "quantité de matière",n,off
entpréc(i*(158/x+1)))->a
a+2->b
pxltexte n,2,b
n&"-"&y&"x"->c
pxltexte c,27,b
y->t1(i)
n->t2(i)
expr(y)->y
expr(n)->n
n/y->e
if e<xmax then
e->xmax
endif
1+i->i
endwhile
pause
disp xmax[/source]

merci de votre aide
ps: une partie sans importance pour ce problème est placé avant ce programme
Posté le 15/02/2010 à 14:29 Membre depuis le 15/03/2008, 91 messages
Je reposte ton programme (plus lisible)

input x

effdessin
effgraph
effercran

pxlligne 25,0,25,158
pxlligne 50,0,50,158

1->i
while i<=x
	entpre'c(i*(158/(x+1)))->a
	pxlligne 0,a,76,a
	i+1->i
endwhile

pxltexte "e.i.",2,2
pxltexte "inter",27,2
pxltexte "e.f.",52,2

1-> i
9999->xmax

while i->x
	request "coefficient",y,off
	request "quantite' de matie`re",n,off
	entpre'c(i*(158/x+1)))->a
	a+2->b
	pxltexte n,2,b
	n&"-"&y&"x"->c
	pxltexte c,27,b
	y->t1(i)
	n->t2(i)
	expr(y)->y
	expr(n)->n
	n/y->e
	
	if e<xmax:e->xmax
		
	1+i->i
endwhile

pause
disp xmax
Posté le 15/02/2010 à 14:33 Membre depuis le 15/03/2008, 91 messages
Baah j'ai pas trop reflechi pour ton probleme mais sinon quand tu entre dans ta boucle if tu sauvegarde l'écran
et tu le réaffiche après.

Sinon ton programme c'est un truc pour la chimie?? (genre déterminer L'avancement final ??)
Posté le 15/02/2010 à 14:38 Membre depuis le 15/03/2008, 91 messages
Sinon le while i->x c'est pas plutot while i>x ou autre chose parce que while i->x c'a marchera pas....
Posté le 15/02/2010 à 15:10 Membre depuis le 15/02/2010, 6 messages
oui mon programme est un tableau d'avancement pour la chimie (bien vu ^^)
c'est bien while i<x que j'ai mis sur ma calculette je me suis trompé en recopiant
comment fait on une capture d'écran ? et comment la remet on après ?
merci de ton aide
Posté le 15/02/2010 à 15:25 Membre depuis le 18/06/2001, -26075 message
Euh xmax c'est une des variables du range non ? C'est l'abcisse max affichée par un graph ? Si c'est ça, il parait normal que l'écran graphique soit réinitialisé quand une modification de la "View Window" (terme Casio grin) est faite. ^^
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 15/02/2010 à 15:36 Membre depuis le 15/02/2010, 6 messages
ah c'est pour ça que j'arrivais pas à déclarer xmax comme variable locale !
Je viens de vérifier mes paramètres graphiques et effectivement xmax a pris la valeur de mon programme !
mon programme maintenant marche avec placeimg et sauveimg .
je vais changer le nom de variable ça sera plus simple !!
Posté le 15/02/2010 à 15:39 Membre depuis le 18/06/2001, -26075 message
de rien !! tongue
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 15/02/2010 à 15:44 Membre depuis le 15/02/2010, 6 messages
merci !
apres avoir changé le nom de la variable tout roule comme sur des roulettes !
juste une dernière petite question : comment on fait pour désactiver le alpha automatique dans les request ?
merci je pense pouvoir maintenant finir mon programme !!
Posté le 15/02/2010 à 15:46 Membre depuis le 18/06/2001, -26075 message
Je crois qu'il faut rajouter un 0 ou un 1 à la fin, ou peut-être true ou false, je sais plus...
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 15/02/2010 à 15:47 Membre depuis le 15/03/2008, 91 messages
alpha automatique dans les request => request prend un argument facultatif (mis a 1 par defaut) donc faut que tu mette un ,0 a la fin de ton request ou ,1 je sais plus....
Posté le 15/02/2010 à 16:15 Membre depuis le 15/02/2010, 6 messages
c'est 0 qu'il faut mettre
j'ai encore un autre probleme (décidément !) :
vous avez vu que dans mon code je met les variables dans une listeà la position i
.... i+1->i endwhile while i<x disp t1(i) disp t2(i) i+1->i endwhile
mais quand je veut les récupérer, il me met le nom de la variable et pas sa valeur ! while i<x
  ...
  expr(y)->y
  expr(n)->n
  y->t1(i)
  n->t2(i)
  


résultat :
y
n
Posté le 15/02/2010 à 16:27 Membre depuis le 18/06/2001, -26075 message
Si tu fais ton disp dans un autre programme/fonction et que y et n sont locaux à un autre, ça ne marchera pas.
Mais reposte ton programme, dans l'état (post 0), il ne me semblerait pas devoir donner ça.
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 15/02/2010 à 17:33 Membre depuis le 15/02/2010, 6 messages
finalement j'ai utilisé les indirections !
merci pour votre aide, grâce à vous j'ai un tableau d'avancement qui marche !!