1

Comment je fais pour passer un fonction en paramètre et comment je fais pour passer une fonction avec InputStr ?

2

Voici mon programme qui ne fonctionne pas. J'aimerais pouvoir prendre ma fonction qui comporte des x et y et ensuite 3 variables:

Prgm
ClrIO
Local m1,m2,m3,m4,fxp
Local h
Input "Entrer la fonction",fxp
Define fx(x,y)=fxp
InputStr "Entrer a",vara
expr(vara)->vara
InputStr "Entrer b",varb
expr(varb)->varb
InputStr "Entrer c",varc
expr(varc)->varc
varb-vara->h
h*fx(vara,varc)->m1
h*fx(vara+h/2,varc+m1/2)->m2
h*fx(vara+h/2,varc+m2/2)->m3
h*fx(vara+h,varc+m3)->m4
Local rep
varc+1/6*(m1+2*m2+2*m3+m4)->rep
Disp "m1="&string(m1)
Disp "m2="&string(m2)
Disp "m3="&string(m3)
Disp "m4="&string(m4)
Disp "reponse="&string(rep)

EndPrgm

3

try
expr(string(fxp)&"->f(x,y)")
else
text "Erreur"
endtry
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

vertyos> il peut y avior un bug si l'une des var x,y ou n'importe quelle autre utilisée dans fxy existe déja
je pense qu'il vaut mieux faire

InputStr "Entrer la fonction",fxp
try
expr(fxp&"->f(x,y)")
else
text "Erreur"
endtry


et il y aune difference entre


expr(string(fxp)&"->f(x,y)")
et
Define fx(x,y)=fxp
?
avatar

5

hmm oui, le 2eme marche pas ? (enfin il me semble)
faudrait faire pareil, expr("define f(x,y)="&fxp), et là ça devient équivalent (y'a pê une petite subtilité, je sais plus)

sinon yep ça marche mieux avec un inputstr c'est sûr, je voulais juste garder le "input" bicause c'est ce qu'il a utilisé dans son programme happy
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

Merci,

j'ai exécuté en enlevant le String et ça fonctionne.

le & c'est pour une référence?

7

c'est pour coller les deux chaines : "hello "&"world" = "hello world"
avatar

8

Ok alors pourquoi lorsque je transforme mon programme en fonction je ne réussi pas. Voici mon code:

Func
Local m1,m2,m3,m4
Local h
varb-vara->h
expr(fxp&"->fx(x,y)")
h*fx(vara,varc)->m1
h*fx(vara+h/2,varc+m1/2)->m2
h*fx(vara+h/2,varc+m2/2)->m3
h*fx(vara+h,varc+m3)->m4
Local rep
varc+1/6*(m1+2*m2+2*m3+m4)->rep
Return "rep="&string(rep)&" m1="&string(m1)&" m2="&string(m2)&" m3="&string(m3)

EndFunc

Et pourquoi je peux pas utiliser Try dans les fonctions?

9

tu passes le corps de ta fonctions sous forme de chaine au programme (dans fxp) ?

tu es tres limité quand tu fais une fonction : en gros il ne doit y avoir aucune entrée sortie dedans ni d'utilisation de variables globales
donc tu dois déclarer fx comme local

pour le try : ca doit faire partie des limitations des fonctions
avatar

10

Ce que j'aurais aimer c'est de faire passé dans le style de la fonction SOLVE ma fonction et 3 paramètres pour que ça retourne 1 chose....

11

Je suis persuader qu'il y a moyen de passer une fonction dans une fonction non?

12

Tu peux passer le nom d'un fichier de type FUNC, et ensuite appliquer expr() dessus.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

13

ou l'appeler avec une indirection #(nom_func)()
avatar

14

Passer le nom de la fonction exemple : x^2/y et après faire expr(fxp&"->fx(x,y)") ne fonctionne pas j'ai un erreur...

Pour l'indirection bien je comprends pas trop ou tu veux que je mets mon #...

15

Je ne comprends pas ce prog. Qu'est-ce que tu veux faire *exactement* ?

16

quand je parlais du nom de la fonction, je voulais dire le nom de la variable qui contient la fonction (par exemple fx)
les indirections ne marchent que sur les noms de variables, pas sur du code le corps de ta fonction soit x^2/y ici)


expr(fxp&"->fx(x,y)") fonctionne, mais il faut que fxp soit une chaine de caracteres ( & fonctionne avec 2 chaines)
avatar

17

Ce que je veux faire exactement c'est d'avoir une fonction x,y et retourner ça réponse. Je la veux en fonction désormais et pas en programme. Pour ce faire, je dois passer ma fonction comme premier paramètre et 3 paramètres.

Je regarde et essaie ce que tu as dis Nu lorsque j'arrive chez moi !