Buenas noches comunidad de Forosweb, espero estén bien tengo un problema en el momento de crear la pila, no se que estoy aplicando mal, llevo unas cuantas horas revisando y leyendo conceptos de apuntadores pero no consigo el error, he creado un programita para inicializar la pila, agregar elementos y remover, me inicia, agrega los elementos y los remueve sin embargo en el momento de mostrar los valores de la pila solo me muestra el ultimo valor ingresado seguido de cero, y cuando voy a eliminar elementos de la pila solo me muestra el ultimo valor agregado y lo demás en 0 ejemplo, si inicio la pila para 4 elementos 1 2 3 4, me muestra 4 0 0 0, y al querer eliminar la pila, elimina cada elemento pero me imprime en pantalla solamente el ultimo elemento ingresado en pantalla dejo el código para que me orienten, gracias de antemano
Código C:
Ver original#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void crearpila (void);
void agregar(void);
void removerpila(void);
void verpila(void);
void mayor(void);
void vaciar(void);
int *pila,pilaon=0,ele,arrepila[20],cont=0;
main()
{
int re;
char r;
do
{
pila=arrepila;
printf("Programa pila\n\n\n"); printf("2. Agregar elementos a la pila\n"); printf("3. Remover elementos de la pila\n"); printf("4. Visualizar elementos de la pila\n"); printf("5. Visualizar la cima de la pila\n"); printf("6. Vaciar la pila\n"); printf("Escoja una opcion por favor...\n");
switch(re)
{
case 1:
crearpila();
break;
case 2:
agregar();
break;
case 3:
removerpila();
break;
case 4:
verpila();
break;
}
}
while (re!=7);
}
void crearpila(void)
{
if (pilaon==NULL)
{
puts("Cuantos elementos desea agregar a la pila\n"); printf("Se ha creado la pila de %d elementos",ele
); pilaon=1;
}
else
{
puts("Ya ha creado la pila anteriormente. Vacie la pila para poder crear una nueva."); }
}
void agregar(void)
{
if (pilaon==NULL)
{
puts("Debe crear una pila primero"); }
else
{
if(cont==ele)
{
puts("La pila se encuentra llena"); }
else
{
puts("Ingrese elemento"); pila++;
cont++;
printf("Elemento ingresado correctamente");
}
}
}
void removerpila(void)
{
if (pilaon==NULL)
{
printf("No hay elementos en la pila"); }
else
{
printf("El elemento %d ha sido removido",*(pila
)); pila--;
cont--;
if(cont==0)
{
pilaon=NULL;
}
}
}
void verpila(void)
{
for (int i=0;i<cont;i++)
{
}
}