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

 C Discussion :

besoin d'aide pour un probleme de pile


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Par défaut besoin d'aide pour un probleme de pile
    voila je veux un prog qui inverse une chaine de caractere a l'aide de pile voici les 2 fichiers du projet et je veux que quelqu'un m'aide :
    pile.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #define MAX_PILE 20
    #define Element char
    struct Pile{
           Element elements[MAX_PILE];
           int sommet;
           };
    Pile pile_vide();
    Pile empiler(Pile p,Element e);
    Pile depiler(Pile p);
    Element sommet(Pile p);
    int est_vide(Pile p);
    pile.c :
    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
     
    #include<conio.h>
    #include<stdio.h>
    #include "pile.h"
    Pile pile_vide(){
         Pile p; 
         p.sommet=-1;
         return p;}
    int est_vide(Pile p){
        if(p.sommet=-1) return 1;
        return 0;}
    Element sommet(Pile p){
            if(est_vide(p)){printf("erreur Pile vide");
            return('$');
            } return p.elements[p.sommet];};
    Pile empiler(Pile p,Element e){
         if((p.sommet)>=MAX_PILE-1)
         printf("Erreur pile pleine");
         else{(p.sommet)++;
         p.elements[p.sommet]=e;}return p;}
    Pile depiler(Pile p){
         if(est_vide(p)){printf("erreur pile vide");
         }else (p.sommet)--;
         return p;}

  2. #2
    Membre confirmé Avatar de Attrox
    Profil pro
    Concepteur
    Inscrit en
    Mars 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Concepteur

    Informations forums :
    Inscription : Mars 2009
    Messages : 119
    Par défaut
    Voici un programme qui inverse une chaine de caractere.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    string maChaineALendroit;
    string maChaineALenver="";
     
    for(i=maChaineAlendroit.length()-1;i<=0;i++)
    {
    maChaineAlenvers+=maChaineALendroit[i];
     
    }

  3. #3
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 142
    Par défaut
    Citation Envoyé par Attrox Voir le message
    Voici un programme qui inverse une chaine de caractere.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    string maChaineALendroit;
    string maChaineALenver="";
     
    for(i=maChaineAlendroit.length()-1;i<=0;i++)
    {
    maChaineAlenvers+=maChaineALendroit[i];
     
    }
    Je pense que c'est plus dans un soucis pédagogique qu'il utilise une pile. De plus ce code est du C++ (utilisation de string).

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    D'abord, un petit conseil, améliore la présentation de ton code et travaille l'indentation, cela facilitera la lecture pour tout le monde.
    Ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Pile depiler(Pile p){
         if(est_vide(p)){printf("erreur pile vide");
         }else (p.sommet)--;
         return p;}
    est plus lisible comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Pile depiler(Pile p)
    {
       if(est_vide(p))
       {
          printf("erreur pile vide");
       }
       else
       {
          (p.sommet)--;
       }
       return p;
    }
    Ensuite, tu passes ta pile par valeur aux fonctions de manipulation de la pile (par exemple à la fonction empiler) ce qui fait que la pile est copiée et cette copie est passée en paramètre, l'élément que tu ajoutes est ensuite ajouté à ce paramètre Pile et lorsque tu quittes la fonction, le paramètre est détruit et perdu (ainsi que toutes les modif que tu as faites dedans).

    Donc pour toutes tes fonctions de manipulation, il faut passer la pile par adresse (pointeur) afin que tes ajouts/suppressions ne soient pas perdus.

    Et enfin l'algorithme resemblerait à un truc comme cela (comme visiblement, c'est un exercice, ne compte pas sur moi pour le code ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Saisir le mot à retourner
    construire une pile vide
     
    Pour chacune des lettres du mot
       ajouter la lettre dans la pile
    Fin pour
     
    Tant que la pile n'est pas vide
       depiler un élément de la pile
       afficher l'élément dépilé
    fin tant que
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. Besoin d'aide pour un probleme avec speex
    Par keenusa dans le forum C
    Réponses: 0
    Dernier message: 22/11/2010, 11h08
  2. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  3. [Kylix] besoin d'aide pour installer kylix3
    Par Sph@x dans le forum EDI
    Réponses: 3
    Dernier message: 11/02/2004, 13h53
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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