Inverser chaine de caractere avec des piles

Fermé
kamaldita -  
 simozeo -
Bonjour,
je voudrai inverser une chaine de caractere en utilisan une pile mais apparemen g un probleme au niveau de la fonction empiler et depiler (le compilateur n'accepte pas le ch[i] comme parametre)
voici mon programme( merci de bien vouloir me montrer le bon chemein pliiiiz)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define dim 100
typedef struct{
char t[dim];
int sommet;}pile;
void initialiser(pile);
int pilepleine(pile);
int empiler(char,pile);
int depiler(char,pile);
main()
{ pile p;
initialiser(p);
int a,i,n,b;
char ch[dim],final_ch[dim];
initialiser(p);
printf("entrez une chaine de caracteres :\t");
gets(ch);
n=strlen(ch);
for(i=0;i<n;i++)
{
a=empiler(ch[i],p);
}
for(i=0;i<n;i++)
{
b=depiler(final_ch[i],p);
}
puts(final_ch);
system("PAUSE");
return 0;
}
void initialiser(pile p)
{p.sommet=0;}
int pilevide(pile p)
{
if(p.sommet=0)
return(1);
else
return(0);
}
int pilepleine(pile p)
{
if(p.sommet=dim-1)
return(1);
else
return(0);
}
int empiler( char ch[i], pile p)
{ int i;
if(
pilepleine(p))
return(0);

else
{
p.sommet=(p.sommet)+1;
p.t[p.sommet]=ch[i];
return(1);
}
}
int depiler(char final_ch[],pile p)
{int i;
if(pilevide(p))
return(0);

else
{
final_ch[i]=p.t[p.sommet];
p.sommet=p.sommet-1;
}
}
Configuration: Windows Vista
Internet Explorer 7.0

3 réponses

  1. simozeo
     
    voila une programme complet
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <conio.h>
    typedef struct{
    int s;
    char T[100];
    }pile;
    void initpile(pile *p)
    {
    (*p).s=0;
    }
    int pilevide(pile p)
    {
    if(p.s==0)
    return 1;
    else
    return 0;
    }
    int pilepleine(pile p)
    {
    if(p.s==100)
    return 1;
    else
    return 0;
    }
    void empiler(pile *p,char x)
    {
    if(pilepleine(*p))
    printf("la pile est pleine :\n");
    else
    (*p).T[(*p).s]=x;
    (*p).s++;
    }
    void depiler(pile *p,char *y)
    {
    if(pilevide(*p))
    printf("la pile est vide :\n");
    else
    (*p).s--;
    *y=(*p).T[(*p).s];
    }
    main()
    {
    pile p;
    char ch[100];
    int n,i;
    char y[100];
    initpile(&p);
    printf("entrez votre chaine:\n");
    gets(ch);
    n=strlen(ch);
    for(i=0;i<n;i++)
    {
    empiler(&p,ch[i]);
    }
    for(i=0;i<n;i++)
    {
    depiler(&p,&y[i]);
    }

    for(i=0;i<n;i++)
    {
    printf("%c",y[i]);
    }
    printf("\n");
    system("PAUSE");
    }
    1