|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 7 ![]() |
Bonjour,
je veux créer un package en ADA pour des listes pouvant prendre n'importe quel élément. J'ai créé une fonction pour créer une liste vide, insérer un élément dans ma liste et une autre pour rechercher un élément dans la liste. Je voudrais maintenant créer une fonction qui affiche ma liste. Je suis confronté au problème suivant: étant donné qu'il peut y avoir n'importe quoi dans la liste (ou presque... :-° ), je ne sais pas comment faire pour afficher ma liste. Je voudrais que dans le body de mon package, il y ait un truc du style: si c'est une liste d'entiers, j'utilise put, si c'est une liste de complexe, j'utilise putComplexe où putComplexe serait une fonction que j'aurais écrite pour écrire des complexes, ... Merci d'avance |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 649 ![]() |
Bonjour,
Une solution élégante serait de passer une procédure "afficher_element" en paramètre de paquetage. generic type element_type is private; with procedure afficher_element(element : in element_type); package liste is -- etc end liste |
|
|
10
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 7 ![]() |
Ok
Et où est ce que je dois définir ma fonction afficher_element? (dans le body du package ou quand j'utilise ma fonction dans un fichier test?) Et il faudrait que je crée plusieurs fonctions afficher et que je dise: si c'est des integer, tu utilises cette fonction, si c'est des ..., tu utilises cette fonction, ... Comment est ce que je peux faire cela? Merci pour votre aide |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 649 ![]() |
Pourais-tu montrer la spécification de ton paquetage list ? Au moins la partie générique que je dise pas n'importe quoi... s'il te plaît ?
|
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 7 ![]() |
Voici à quoi ressemble la spécification de mon package liste:
Code ADA :
Merci pour votre aide |
||
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 649 ![]() |
Ah non,
C'est with procedure afficher(E : in t); La procédure afficher, il te faut la déclaré avant l'instance du paquetage. En espérant que ça le fasse. Donc une procédure par type pour chaque l'instance de paquetage. Si je ne m'abuse. |
|
|
00
|
|
|
#7 | |
![]() ![]() Romuald PerrotAttaché Temporaire d'Enseignement et de Recherche (ATER) Inscription : avril 2005 Messages : 4 144 ![]() |
Citation:
__________________
http://rperrot.developpez.com http://phos-graphein.fr Vous désirez contribuer à la rubrique algorithmique, n'hésitez pas à me contacter. |
|
|
|
00
|
|
|
#8 | ||||||
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 7 ![]() |
Merci de votre réponse
J'arrive à afficher un entier de cette façon. Le problème, c'est que si je veux créer un package pour afficher un entier et un autre pour afficher un flottant, il me dit qu'il y a des problèmes Voici ma partie spécification: Code ADA :
Voici le body de ma partie spécification: Code ADA :
et ma partie de test: Code ADA :
Il me dit que Liste_flottant n'est pas défini et il voudrait que je mette des éléments de type integer dans l2 Il me dit aussi Code :
expect discrete type in instantiation of "t" Merci beaucoup pour votre aide précieuse |
||||||
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 649 ![]() |
Bonjour joss,
Est-ce que par hasard tu pourrais pas mètre tes float dans un type article qui lui serait discret ? |
|
|
00
|
|
|
#10 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 649 ![]() |
Et puis, par hasard encore, est-ce qu'au lieu de type t is (<>), c'est pas type t(<>)...
|
|
|
00
|
|
|
#11 | |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 7 ![]() |
Citation:
type T is (<>); Any discrete type: integer, modular, or enumeration. c'est pour ça que je peux pas mélanger integer et float. Par contre, j'ai essayé la même chose avec un type défini par des enregistrement à la place de float et ça ne marchait pas non plus. Je vais essayer ce que tu m'as dit avant et je vous tiens au courant. |
|
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() |
Bon, je me réveille un peu tard mais disons que la solution se trouve du côté de cette page
Pour être encore plus précis, je pense qu'il te faut un type non limité sinon pas d'assignation et là, ça ne marcherait pas pour tes Float et Integer. De plus, j'aurais aussi tendance à dire qu'il faut qu'il soit defini pour pouvoir créer des variables sans assigner la valeur. Normalement, avec ça, tu as toutes les réponses. Il reste quand même quelques petits trucs qui ne passent pas la compilation en l'état mais rien d'insurmontable |
|
00
|
Copyright © 2000-2012 - www.developpez.com