Peut-on mettre un tableau en argument d'une procédure ?

Tout ce qui concerne le langage Asymptote. Ce langage est supporté sur le forum via les balises asy.

Modérateur : gdm_asy

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
gilles
Utilisateur confirmé
Utilisateur confirmé
Messages : 55
Inscription : dimanche 04 octobre 2009, 20:36
Localisation : Bordeaux

Peut-on mettre un tableau en argument d'une procédure ?

Message par gilles »

Bonjour à tous,
j'écris une procédure (directement inspirée par la procédure "bargraph" de Gaétan), dont l'en-tête ressemble à ça :

Code : Tout sélectionner

void diagrammebatons(
real longueur,
real hauteur,
real ymin,
real ymax,
real ystep,
real tickwidth=0.1,
string yformat="%.0f",
Label LabelX,
Label LabelY,
Label[] LabAbscisses={"1","2","3","4","5","6"},
real[] ValOrdonnees={4,2,4,5,3,2},
pen p=blue)
Pour l'exemple, je spécifie ici les labels des abscisses et des ordonnées par défaut.
Évidemment, je veux pouvoir les passer en paramètres lorsque j'appelle ma procédure.
Si j'appelle :

Code : Tout sélectionner

diagrammebatons(longueur=6, hauteur=5, ymin=1, ymax=6, ystep=1, LabelX="face", LabelY="effectif")
cela compile sans problème.
Mais si je veux changer les labels des abscisses et des ordonnées (ce qui est quand même le but de la procédure...), en appelant :

Code : Tout sélectionner

diagrammebatons(longueur=6, hauteur=5, ymin=1, ymax=6, ystep=1, LabelX="face", LabelY="effectif", LabAbscisses={"Riri", "Fifi", "Loulou"},  ValOrdonnees={4,2,4})
ben j'ai une syntax error.

En fouillant un peu, je n'ai trouvé nulle part d'exemple de procédure où un des arguments était un tableau. Pourtant, je ne vois pas l'obstacle théorique à la chose. Y en a-t-il un, ou fais-je une erreur évidente que je ne vois pas ?

Merci de vos lumières !

maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Peut-on mettre un tableau en argument d'une procédure ?

Message par maurice »

Bonjour, difficile de tester sans toute la procédure, il faut tout réadapter à partir de bargraph...
Quelles erreurs obtiens tu ? Ca pourrait aider.

Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf

maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Peut-on mettre un tableau en argument d'une procédure ?

Message par maurice »

gilles a écrit : Mais si je veux changer les labels des abscisses et des ordonnées (ce qui est quand même le but de la procédure...), en appelant :

Code : Tout sélectionner

diagrammebatons(longueur=6, hauteur=5, ymin=1, ymax=6, ystep=1, LabelX="face", LabelY="effectif", LabAbscisses={"Riri", "Fifi", "Loulou"},  ValOrdonnees={4,2,4})
ben j'ai une syntax error.

Néanmoins, tu peux essayer en remplaçant ta ligne par :

Code : Tout sélectionner

diagrammebatons(longueur=6, hauteur=5, ymin=1, ymax=6, ystep=1, LabelX="face", LabelY="effectif", new Label[]{"Riri", "Fifi", "Loulou"},  new real[]{4,2,4})
le mélange de bargraph et de ta procédure compile :
{}

Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf

gilles
Utilisateur confirmé
Utilisateur confirmé
Messages : 55
Inscription : dimanche 04 octobre 2009, 20:36
Localisation : Bordeaux

Re: Peut-on mettre un tableau en argument d'une procédure ?

Message par gilles »

:D Merci beaucoup !
Effectivement, ça compile grâce au

Code : Tout sélectionner

 new Label[] {...} 
Si ce n'est pas abuser de ta patience, pourrais-tu me dire pourquoi les paramètres tableau sont à traiter différemment ? Pourquoi ce new, pourquoi ne peut-on pas simplement écrire nomdutableau={nouveautableau} comme avec les autres paramètres ?

Gilles

maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Peut-on mettre un tableau en argument d'une procédure ?

Message par maurice »

gilles a écrit : Si ce n'est pas abuser de ta patience, pourrais-tu me dire pourquoi les paramètres tableau sont à traiter différemment ? Pourquoi ce new, pourquoi ne peut-on pas simplement écrire nomdutableau={nouveautableau} comme avec les autres paramètres ?
Ça je ne sais pas exactement, j'avais juste remarqué que pour les listes, il y avait souvent des problèmes... Il faudra qu'un spécialiste de programmation passe par ici.
Peut-être une histoire de longueur de liste ...?
Ça m'intéresserait de connaitre le fond du problème.

Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf