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 :

Probleme piles (pointeurs)


Sujet :

Ada

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Probleme piles (pointeurs)
    Bien le bonjour ,

    Pour commencer je vais vous montrer un cours aperçu de mon code pour mieux comprendre mon problème :

    Specification :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    package Piles_Dynamiques is
    Mémoire_Insuffisante : exception;
    Pile_Vide : exception;
    type T_Info is access String;
    type T_Elément;
    type T_Lien is access T_Elément;
    type T_Elément is
    record
    Info : T_Info;
    Suivant : T_Lien;
    end record;
    -- Insère Info au sommet de la pile
    -- Lève Mémoire_Insuffisante si l'opération s'avère impossible
    procedure Empiler (Pile : in out T_Lien; Info : in T_Info);
    .....
     
    Corp :
    package body Piles_Dynamiques is
     
    procedure Empiler (Pile : in out T_Lien;
    Info : in T_Info) is
     
    Courant : T_Lien := Pile;
    Suivant : T_Lien;
     
    begin
     
    if Courant = null then
    Courant := new T_Elément'( Info , null);
    else
    Suivant := Courant ;
    Courant := new T_Elément'(Info,Suivant);
    end if;
     
    Pile := Courant ;
    exception
    when Storage_Error => raise Mémoire_Insuffisante;
     
    end Empiler;
    .....
    Il s'agit donc d'une pile tout ce qu'il y'a de plus commun que je déclare avec une procédure pour ajouter un élément un élément au dessus.

    Maintenant quand je teste ma procédure Empiler , une exception Storage_Error est lévée , je comprend vraiment pas pourquoi. Pourtant c'est pas la première fois que je manie les pointeurs ....

    Voilà tout , j'espère vraiment que je trouverai mon héros le plus vite possible , parce que ça m'énerve un peu de rester bloquer sur un truc aussi simple ....

    Merci de vous être intéresser à mon problème et pour vos réponses .

    N'hésitez pas à demander si vous le pensez utile plus de détails.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour, le code que tu as posté semble correcte.
    J'ai fait 100 itératon d'appel à empiler et ça marche.

    T'aurais pas ton bout de code d'appel à empiler ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Salu jovalise ,
    Déjà merci bcp pour ta réponse Ça me rassure énormément ^^' pour le code de test je te l'envoi dans l'heure qui suit parceque je l'ai pas sur moi en ce moment ! Encore merci d'avoir pris de ton temps pour tester !

  4. #4
    Membre actif

    Homme Profil pro
    Mathématicien et développeur
    Inscrit en
    Mars 2012
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Mathématicien et développeur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 132
    Points : 241
    Points
    241
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par SaMsIDevelop Voir le message
    Il s'agit donc d'une pile tout ce qu'il y'a de plus commun que je déclare avec une procédure pour ajouter un élément un élément au dessus.
    Le code a l'air impecc' et fonctionne très bien!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    with Ada.Text_IO; use Ada.Text_IO; 
    with Piles_Dynamiques; use Piles_Dynamiques;
     
    procedure Test_Piles_Dynamiques is
      Pile: T_Lien;
    begin
      for i in 1..10_000_000 loop
        Empiler (Pile, new String'("Element" & Integer'Image(i)) );
      end loop;
      while Pile /= null loop
        Put_Line(Pile.Info.all);
        Pile:= Pile.Suivant;
      end loop;
    end Test_Piles_Dynamiques;
    La partie remplissage fonctionne et prend quelques secondes sur mon netbook (GNAT GPL 2011, Windows 7).

Discussions similaires

  1. Probleme de pointeur
    Par Naruto_kun dans le forum C
    Réponses: 17
    Dernier message: 14/12/2005, 20h47
  2. Classe, pile, pointeurs et casse-tête!
    Par zazaraignée dans le forum Langage
    Réponses: 6
    Dernier message: 26/09/2005, 16h57
  3. Probleme de pointeurs
    Par mickyoun dans le forum C++
    Réponses: 9
    Dernier message: 10/08/2004, 17h15
  4. Probleme de pointeur sur une fonction
    Par nicky78 dans le forum C
    Réponses: 2
    Dernier message: 23/05/2004, 20h26
  5. probleme avec pointeurs de structures
    Par remi77 dans le forum C
    Réponses: 2
    Dernier message: 20/10/2003, 13h19

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