Inverser chaine de caractere avec des piles

Fermé
kamaldita - 21 avril 2009 à 00:05
 Utilisateur anonyme - 18 janv. 2015 à 17:19
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;
}
}

3 réponses

Utilisateur anonyme
18 janv. 2015 à 17:19
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