un programa en C , donde muestra una gramática diferente pero un poco mas entendible para mí , espero que para uds también.
Código:
class Pilas
{
public:
void AgregaFa(char);
char RemueveFaCa(void);
Pilas(void); //constructor
~Pilas(void); //destructor
private:
bool EsVaciaFaBool(void);//funciones boleanas
bool EsLlenaFaBool(void);
char LaPilaArCa[12];
int TopeEn,TopeMaxEn;
};
void Pilas::AgregaFa(char.ValorCa)
{
if(!EsLlenaFaBool())
LapilaArCa[++TopeEn] = ValorCa;
else
{
printf("Desborde de Pila\n");;
exit(1);//para el programa
}
}
char Pilas::RemuevaFaCa(void)
{
if(!EsVaciaFaBool())
return LaPilaArCa[TopeEn--];
else
{
printf("PilaVacia\n");
exit(1); //para el programa
}
}
bool Pilas::EsVaciaFaBool(void)
{
return Bool(TopeEn == -1);
}
bool Pilas::EsLlenaFaBool(void)
{
TopeEn = -1;
TopeMaxEn = 10;
}
Pilas::~Pilas(void){}
void main(void)
{
Pilas LaPilaCa();
char InfoCa = 'a';
int iEn;
while(InfoCa != 'x')
{
puts("Dame un valor caracter");
scanf("%c",&InfoCa);
LaPilaCa.AgregaFa(InfoCa);
}LaPilaCa.PintaPilaCa();
for(iEn = 1; iEn <= 3; iEn ++)
printf("%c",RemueveFaCa());
}LaPilaCa.PintaPilaFa();
void PintaPilaFa(void);
int Tope0En;
void Pilas::PintaPilaFa()
{
printf("|%c| < - TopeEn\n", LaPilaArCa[TopeEn]);
Tope0En = TopeEn - 1;
while(Tope0En != -1)
printf("|%c|\n",LaPilaArCa[Tope0En --]);
}
No se si compila, ya que lo hice en las compus de mi fac, y de casualidad no tenían mingw
ResponderEliminarporfa compilenlo para asegurarse que funciona jee.