Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/03/2014, 21:59
RaKKoS
 
Fecha de Ingreso: junio-2009
Ubicación: House
Mensajes: 38
Antigüedad: 15 años
Puntos: 1
Error a mostrar pila

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
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5. void crearpila (void);
  6. void agregar(void);
  7. void removerpila(void);
  8. void verpila(void);
  9. void mayor(void);
  10. void vaciar(void);
  11.  
  12. int *pila,pilaon=0,ele,arrepila[20],cont=0;
  13.  
  14. main()
  15. {
  16. int re;
  17. char r;
  18. do
  19. {
  20. pila=arrepila;
  21. printf("Programa pila\n\n\n");
  22. printf("\n1. Crear pila\n");
  23. printf("2. Agregar elementos a la pila\n");
  24. printf("3. Remover elementos de la pila\n");
  25. printf("4. Visualizar elementos de la pila\n");
  26. printf("5. Visualizar la cima de la pila\n");
  27. printf("6. Vaciar la pila\n");
  28. printf("7. Salir\n");
  29. printf("Escoja una opcion por favor...\n");
  30. scanf("%d",&re);
  31.  
  32.     switch(re)
  33.      {
  34.         case 1:
  35.             crearpila();
  36.             break;
  37.         case 2:
  38.             agregar();
  39.             break;
  40.         case 3:
  41.             removerpila();
  42.             break;
  43.         case 4:
  44.             verpila();
  45.             break;
  46.      }
  47. }
  48. while (re!=7);
  49. }
  50.  
  51. void crearpila(void)
  52. {
  53. if (pilaon==NULL)
  54.     {
  55.      system("cls");
  56.       puts("Cuantos elementos desea agregar a la pila\n");
  57.      scanf("%d",&ele);
  58.      printf("Se ha creado la pila de %d elementos",ele);
  59.      pilaon=1;
  60.      getch();
  61.      system("cls");
  62.  
  63.     }
  64.     else
  65.     {
  66.         puts("Ya ha creado la pila anteriormente. Vacie la pila para poder crear una nueva.");  
  67.     }
  68.  
  69. }
  70.  
  71. void agregar(void)
  72. {
  73. if (pilaon==NULL)
  74. {
  75. puts("Debe crear una pila primero");
  76. system("cls");
  77. }
  78.  
  79. else
  80. {
  81.  
  82.    
  83.     if(cont==ele)
  84.     {
  85.     puts("La pila se encuentra llena");
  86.     getch(); system("cls");
  87.     }
  88.    
  89.     else
  90.     {
  91.     system("cls");
  92.     puts("Ingrese elemento");
  93.     scanf("%d",&*(pila));
  94.     pila++;
  95.     cont++;
  96.     printf("Elemento ingresado correctamente");
  97.     getch();
  98.     system("cls");
  99.    
  100.     }      
  101.    
  102. }
  103. }
  104.  
  105. void removerpila(void)
  106. {
  107.  
  108.     if (pilaon==NULL)
  109.     {
  110.         printf("No hay elementos en la pila");
  111.     }
  112.     else
  113.     {
  114.         printf("El elemento %d ha sido removido",*(pila));
  115.         pila--;
  116.         cont--;
  117.             if(cont==0)
  118.             {
  119.             pilaon=NULL;
  120.             }
  121.     }
  122.    
  123.  
  124.  
  125. }
  126.  
  127. void verpila(void)
  128. {
  129. for (int i=0;i<cont;i++)
  130. {
  131. printf("%d ",*(pila-i));   
  132. }
  133.  
  134.  
  135. }