1

tromb Fichier joint : main.diamond.89p

Bon, j'ai commencé un p'tit programme tout con que j'ai toujours voulu faire, et je suis confronté à un bug extrêment irritant et illogique.

diamond(fx)
Prgm
Local fx,df,vint,rac,y,k,ndb,dm,xpos,x,tvl
Définir ndb(l)=Func:Local l,x,a,n,y,b,t:For x,1,dim(l):l[x]->a:0->n:For y,x+1,dim(l):l[y]->b:If a=b:n+1->n:If y<dim(l):If l[y+1]a:Goto sui:EndFor:Lbl sui:augmente(gauche(l,x),droite(l,dim(l)-x-n))->l:EndFor:Return l:EndFunc
{}->raci:{"-oo","+oo"}->dm:24->xpos
expr(fx)->fx /!\Et là, c'est le drame/!\
EffES
Disp "f(x)=",fx
vertel("stxt","Confirm ? [Y]/[N]","","paus","","retr","k")
If k[1]=121:Goto end
vertel("stxt","Calculating derivative")
dériv(fx,x)->df
vertel("stxt","Calculating forbidden values")
zéros(dénom(fx),x)->vint
vertel("stxt","Calculating solutions of f'(x)=0")
zéros(numér(df),x)->rac
vertel("stxt","Creating variation table values list")
augmente(rac,vint)->tvl
TriCroi tvl
ndb(tvl)->tvl
vertel("stxt","Done ! Creating table"):AffGraph
défGraph("Axes","OFF")
vertel("line",{0,11,0},{25,15,37},{160,11,160},{25,92,37},"","text",{"x","f'","f"},2,{17,28,40},0,"","text",dm,{13,149},19,0)
For x,1,dim(tvl)
vertel("text",chaîne(tvl[x]),xpos,19,0)
xpos+11->xpos
EndFor
Lbl end
vertel("stxt","Press a key to exit","","paus")
EndPrgm


expr(fx)->fx
J'oubtiens "Variable indéfinie", ce qui n'est évidemment pas le cas.
Merci d'vos avis, car là ça me dépasse --"

2

Où ça, quelle ligne renvoit l'erreur ? T'as viré toutes les variables du répertoire courant j'imagine ?
avatar
<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !

3

Essaie d'enlever le fx des variables locales pour voir

4

ça fait longtemps que j'ai pas fait de basic, mais le "local fx" n'est pas de trop, si "fx" est déjà un paramètre de ton programme ?

sinon rien à voir, mais tu peux ajouter un 1 comme paramètre supplémentaire à "retr" pour que "k" soit enregistré directement sous forme d'entier au lieu d'une liste qui contient un entier (cf. notice pour plus d'infos) :
vertel("stxt","Confirm ? [Y]/[N]","","paus","","retr","k",1)
If k/=121:Goto end 

[edit] cross avec ./3
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

Sburb (./3) :
Essaie d'enlever le fx des variables locales pour voir


J'en savais rien ^^
Zephyr (./4) :
(..)mais tu peux ajouter un 1 comme paramètre supplémentaire à "retr" pour que "k" soit enregistré directement sous forme d'entier au lieu d'une liste qui contient un entier (cf. notice pour plus d'infos) :
vertel("stxt","Confirm ? [Y]/[N]","","paus","","retr","k",1)
If k/=121:Goto end 

[edit] cross avec ./3


J'avais jamais remarqué ^^

6

Bon alors j'ai viré l'instruction Local et ça marche nickel, donc j'ai foutu un DelVar à la fin mais c'est une solution que je déteste.

7

mais il sert à rien le delval, si fx est un paramètre de ton programme il est forcément local non ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

8

Non, j'ai testé --".

Ce bug reste un mystère --".

9

t'avais viré le fx du var-link avant ? Ya pas de bug mystère, ya que des conneries écrites hein grin
avatar
<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !

10

Folco (./9) :
t'avais viré le fx du var-link avant ? Ya pas de bug mystère, ya que des conneries écrites hein grin

J'ai fait ça en premier, je le fais toujours #okay#.

11

Mystère non résolu -> Suppression du programme.

J'prendrais Dérivée 4.6, ça suffira largement trigni