IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ada Discussion :

Inversion de tableau


Sujet :

Ada

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 93
    Points : 130
    Points
    130
    Par défaut Inversion de tableau
    Bonjour, j'ai deux interrogations :

    soit la structure de donnée suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Max : constant Integer := 10;
       type T_Tab is array (1 .. Max) of Integer; 
    type T_liste is 
          record 
             Contenu : T_Tab;  
             borne_sup    : Integer;  
             borne_inf     : Integer;  
             Taille  : Integer;  -- taille de la liste de données (en nombre d'élements)
          end record; 
    MaList : T_Liste;
    Des éléments sont stockés entre borne_inf et borne_sup (exclu), borne_sup peut-être avant borne_inf, on considère que le tableau est circulaire.

    On gére cette "liste" de données.
    On ne peut ajouter un élément qu'a la borne_sup.
    Le retrait d'un élément s'effectuant toujours à borne_inf

    - J'aimerais savoir comment extraire le dernier élément de cette liste (donc qui se trouve à l'indice borne_sup-1) sans n'avoir accès ni à borne_sup ni borne_inf ?

    Bon ça, je pourrais trouver tout seul, il suffit d'utiliser un tableau temporaire et de retirer tous les éléments juqu'a que la "liste" soit vide (= plus aucun élément).

    Mon interrogation principale est la suivante :
    comment inverser l'ordre de la liste sans utiliser de tableau ou variable temporaire donc de manière récursive ?
    Le tout, toujours sans n'avoir accès à borne_sup et borne_inf mais aux seules opérations de base :
    -ajouter un élément
    -retirer un élément
    -extraire le dernier élément (1ère interrogation)
    -tester si la liste est vide ou pleine (renvoi un booléen)

    Piste : je pense qu'il faut faire quelquechose du genre (pseudo-code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procédure inverser(f: t_liste)
    e:= extraire_dernier_element(f)
    si not file_vide(f) alors inverser(f); fin;
    ajouter_un_élément(f,e)

  2. #2
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 119
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par flolem
    bonjour, j'ai deux interogation:

    soit la structure de donnée suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Max : constant Integer := 10;
       type T_Tab is array (1 .. Max) of Integer; 
    type T_liste is 
          record 
             Contenu : T_Tab;  
             borne_sup    : Integer;  
             borne_inf     : Integer;  
             Taille  : Integer;  -- taille de la liste de données (en nombre d'élements)
          end record; 
    MaList : T_Liste;
    Juste une remarque, cette structure n'est pas a utiliser pour ton exercice, pourquoi nous la fournir dans ton enonce?
    Au final, les seuls elements qui te sont utiles sont les declaration des procedures/fonctions (que tu ne donnes pas :-?) que te fournissent le package et leur specification (ca on les a).

    Des éléments sont stockées entre borne_inf et borne_sup (exclu), borne_sup peut-être avant borne_inf, on considère que le tableau est circulaire.

    on gére cette "liste" de données.
    On ne peut ajouter un élément qu'a la borne_sup.
    Le retrait d'un élément s'effectuant toujours à borne_inf
    Dans le cadre de ton exercice, le fait de savoir que le tableau soit circulaire n'a pas grand interet.

    -j'aimerais savoir comment extraire le dernier élèment de cette liste (donc qui se trouve à l'indice borne_sup-1) sans n'avoir accès ni à borne_sup ni borne_inf?

    bon ça, jpourrais trouver tout seul, il suffit d'utiliser un tableau temporaire et de retirer tout les éléments juqu'a que la "liste" soit vide (= plus aucun élément)
    A quoi te sert le tableau temporaire?
    Si ta liste devient vide, tu ne reponds pas a la specification que tu donnes.

    mon interrogation principale est la suivante:
    comment inverser l'ordre de la liste sans utiliser de tableau ou variable temporaire donc de manière récursive?
    le tout, toujours sans n'avoir accès à borne_sup et borne_inf mais aux seules opérations de base:
    -ajouter un élément
    -retirer un élément
    -extraire le dernier élément (1ere interrogation)
    -tester si la liste est vide ou pleine (renvoi un booléen)

    piste: je pense qu'il faut faire quelquechose du genre (pseudo-code):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procédure inverser(f: t_liste)
    e:= extraire_dernier_element(f)
    si not file_vide(f) alors inverser(f); fin;
    ajouter_un_élément(f,e)
    Quelle est la question exactement? A priori tu as ton algo, pourquoi ne le codes-tu pas?
    Ce n'est pas pour paraitre abrupt (desole si c'est le cas), mais tu donnes une reponse, donc j'ai un peu de mal a comprendre ce qui te bloque.

    Code ton probleme en Ada et si quelque chose te bloque, alors poste-le.
    Il y aura bien quelqu'un pour t'aider.

    A+

    Juan

Discussions similaires

  1. Inverser un tableau (ou table)
    Par jlfprofoto dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 15/02/2014, 15h06
  2. Inversion de tableau avec fortran
    Par jal13 dans le forum Fortran
    Réponses: 5
    Dernier message: 21/10/2010, 00h47
  3. Réponses: 3
    Dernier message: 08/08/2007, 09h47
  4. [Débutant] Inverser un tableau
    Par Zhitoune dans le forum Delphi
    Réponses: 9
    Dernier message: 22/06/2007, 10h56
  5. Algorythmie: inverser un tableau c++
    Par corseb-delete dans le forum C++
    Réponses: 12
    Dernier message: 12/12/2006, 02h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo