Page 1 of 1

utilisation de l'indirection

Unread postPosted: 17 Nov 2011, 21:40
by hermes
bonsoir

je reviens vers vous pour un probleme d'indirection. je voudrais qu'au sein d'un programme et plus particulierement en utilisant la fonction solve,que lorsque je defini que t->x et que x->25 je voudrais que 25 se stock dans t que je puisse effacer x voila un petit exemple
Code: Select all
()
Prgm
DelVar x,t,y
y»t
x»y
expÐlist(solve(v=(462.3*t*(0.624+r))/p,x),x)»x
x[1]»x
Disp "t",t
Delvar x
Disp "t",t
EndPrgm


je voudrais donc que la seconde fois se soit bien la valeur de t qui soit affiché et non x comme c'est le cas actuellement

Re: utilisation de l'indirection

Unread postPosted: 20 Nov 2011, 16:00
by Loulou 54
Mmh c'est un peu bizarre.. ^^ Pourquoi le fait d'effacer x devrait changer l'affichage de t ?

Sinon, l'indirection, (#) (que tu n'utilises même pas dans ce programme d'ailleurs ! ^^) permet de stocker une valeur dans une variable dont le nom est donné par une chaîne de caractères.
Exemple :
Code: Select all
Request "Enregistrer sous",str   // L'utilisateur entre par exemple "aba"
25->#str


Ainsi, aba=25.

Tu peux aussi l'utiliser pour faire des choses plus sophistiquées comme enregistrer des nombres dans des variables numérotées.
Exemple :
Code: Select all
For n,1,10
2^n->#("puis"&string(n))    // Il est important de mettre des () quand il y a concaténation.
EndFor


Avec ça, tu auras : puis1=2 ; puis2=4 puis3=8 ; ...

L'indirection est un outil très puissant ! (ça manque beaucoup aux z80..) C'est parfois comparable aux pointeurs en C..

Pour ce qui est de ton problème exactement, je n'ai pas bien saisi ce que tu voulais faire..

EDIT : d'accord, je pense que tu veux mettre t dans x et lorsque tu fais 25->x tu aies t=25 ?
En effet, il faut utiliser une indirection :
Code: Select all
"t"->x
25->#x

Tu auras donc bien t=25.