1

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

2

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

3

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 ??)

4

Sinon le while i->x c'est pas plutot while i>x ou autre chose parce que while i->x c'a marchera pas....

5

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

6

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. ^^

7

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 !!

8

de rien !! tongue

9

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 !!

10

Je crois qu'il faut rajouter un 0 ou un 1 à la fin, ou peut-être true ou false, je sais plus...

11

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....

12

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

13

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.

14

finalement j'ai utilisé les indirections !
merci pour votre aide, grâce à vous j'ai un tableau d'avancement qui marche !!