Page 1 of 1

programme au nombre d'argument variable : possible ?

Unread postPosted: 26 Sep 2009, 19:46
by Levak
Bonsoir tout le monde !
La question est la suivante (mais j'ai la réponse hein c'est juste histoire de faire participer tout le monde à la réflexion xD) :

Comment faire un programme dont le nombre d'arguments est variable ?
A première vue ce n'est pas possible pour des programmes utilisateurs mais ceux proposés par TI par défaut le font, par exemple la fonction solve() qui admet certes un nombre d'argument minimum (2 avec (in)égalité dans le 1er)mais auquel on peu rajouter un nombre conséquent de variables à deviner après...
Vous voyez toujours pas comment faire ?

Allez un petit effort ! :;):

La solution est...



... tenez je vais faire mon chieur et vais attendre un peu avant de répondre, postez vos remarques ou solutions si vous trouvez avant les autres ! :#gni#:

hehe, Levak repart se frottant les mains avec un sourire malicieux :%):

Re: programme au nombre d'argument variable : possible ?

Unread postPosted: 26 Sep 2009, 19:53
by Marco
Je connais pas trop les Nspire, mais un argument ne peut-il pas subtilement en contenir d'autres ?

Re: programme au nombre d'argument variable : possible ?

Unread postPosted: 26 Sep 2009, 19:55
by Levak
Marco wrote:Je connais pas trop les Nspire, mais un argument ne peut-il pas subtilement en contenir d'autres ?


tu es sur la voie oui :#langue#:

Re: programme au nombre d'argument variable : possible ?

Unread postPosted: 26 Sep 2009, 20:01
by tama
hmm moi pour faire un programme à plusieurs arguments, soit le plus simple c'est d'utiliser une liste et ensuite de calculer son nombre d'éléments, soit une chaine et extraire les "," et autres délimiteurs, mais ça c'est plus compliqué ._.

Re: programme au nombre d'argument variable : possible ?

Unread postPosted: 26 Sep 2009, 20:03
by Levak
tama wrote:hmm moi pour faire un programme à plusieurs arguments, soit le plus simple c'est d'utiliser une liste et ensuite de calculer son nombre d'éléments, soit une chaine et extraire les "," et autres délimiteurs, mais ça c'est plus compliqué ._.


Bon... j'aurais pas du vous sous-estimer.... en moins de 15 minutes vous avez trouvé la solution :#tritop#:

Mais bon, c'était pas mal de le rappeler quand même (en fait c'était cette nuit je me suis soudain réveillé avec cette idée en tête... :#roll#: )

@+

Re: programme au nombre d'argument variable : possible ?

Unread postPosted: 26 Sep 2009, 20:07
by critor
J'aurais répondu la liste, comme tama.

Quelque chose du style:
Code: Select all
f(newList(1,4,1))

Re: programme au nombre d'argument variable : possible ?

Unread postPosted: 26 Sep 2009, 20:28
by Marco
Moi je pensais plus à des chaines qu'à des listes, à cause du type de données limitées qu'on peut y mettre, même si je ne suis même pas sûr de leur fonctionnement sur Nspire.

Re: programme au nombre d'argument variable : possible ?

Unread postPosted: 26 Sep 2009, 20:53
by Levak
Marco wrote:Moi je pensais plus à des chaines qu'à des listes, à cause du type de données limitées qu'on peut y mettre, même si je ne suis même pas sûr de leur fonctionnement sur Nspire.


J'arrive à afficher des modèles 3D avec plus de 2700 arguments (les 1/3 des données sont des arguments vides pour faire des lignes et arrêter le tracer) dans une liste pour Make3D (2 listes, les X et les Y)


critor oui :;):

Re: programme au nombre d'argument variable : possible ?

Unread postPosted: 27 Sep 2009, 11:02
by Adriweb
bonne méthode, j'y avais pensé, mas jamais essayé, content de savoir qu'on peut faire ca sans trop de difficulté :D

Re: programme au nombre d'argument variable : possible ?

Unread postPosted: 27 Sep 2009, 12:48
by Bisam
Ce qui est intéressant, c'est aussi de gérer le comportement humain face à un nombre d'arguments qui peut changer, et face à à l'ordre desdits arguments.

Si tu reprends l'idée de la liste, tu peux rajouter des tests sur le type de données pour savoir si le bon argument a été placé au bon endroit.

Par exemple, dans mon programme sur les DL, si on tape l'une des 7 lignes :
Code: Select all
dl(sin(x)/x,3)
dl(sin(x)/x,{x,3})
dl(sin(x)/x,{3,x})
dl(sin(x)/x,{x=0,3})
dl(sin(x)/x,{0=x,3})
dl(sin(x)/x,{3,x=0})
dl(sin(x)/x,{3,0=x})
on obtient le même résultat.