Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: attackers en 30 Octubre 2011, 23:43 pm



Título: ayuda con agregar y eliminar pila
Publicado por: attackers en 30 Octubre 2011, 23:43 pm
amigos quien me puede ayudar a terminar este codigo o darme un manual sobre agregar pila y eliminarla y mostrarla

casi todo los que consigo son con punteros

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define p printf
#define s scanf


void agregar (void);
void retirar (void);
void mostrar (void);

/*********************************************************/

int pila[100],tope=0,max=1;


main()
        {
char sc;
            
          system("cls");    
                system("color A");

                /*** MENUU DE PILA Y COLA ***/

                p("\n\t\t\t\aPROGRMA DE PILA Y COLA\n\n\t\t\t");
                p(" \n\t\t\t**Presione 1 para agregar pilas\n\n");
                 p("\n\t\t\t**Presione 2 para eliminar pilas \n\n");
                p("\n\t\t\t**Presione 3 para mostrar las pilas");
                 p("\n ");

sc=getch();


switch(sc)

{

case 1:
     agregar ();
     break;
    
    
     case 2 :
          retirar ();
          break;
    
    
    
          case 3 :
               mostrar ();
               break;
              
}
              
              
            


/******otro menu*/
void agregar (void)
(
char seguir



do {
               if (tope==10)
               (
              
                            p("\n\noverflow....\n\n");
               system ("pause");
               )
                      else (
                      
                      p("\n\n intruduzca una numero");
                      tope=tope+1;
                      s("%d",&pila[tope];
                      
                      )                  
                      
                      
                      p("\n\n desea añador otro elemente s/n");
                      
               seguir=getch();
              
system("cls");

) while ((seguir=='s') || (seguir=='S') && (tope<max);


void retirar (void)

(
system ("cls");
if (tope==0)
{
p("underflow presione una tecla ");

}

                      else
                      
                 {
                      p("\n\n\nretirado %d de la pila\n\n", pila[tope]);
                      
                      system("pause");
                      pila[tope]=0;
                      tope=tope=-1
                      
                      }
                      )


Título: Re: ayuda con agregar y eliminar pila
Publicado por: rir3760 en 31 Octubre 2011, 02:09 am
Deficiencias en el programa hay muchas empezando por la definición de la función principal y el uso de conio. También el uso de las macros es ... inusual. Ellas las debes utilizar para darle claridad al programa, no para moldearlo al gusto. Por favor lee los temas fijos del foro.


Errores importantes hay varios, primero declaras un array con 100 elementos y a continuación limitas el uso de estos a solo 10. En su lugar utiliza las macros como dios manda, define una y utilizala en todo el programa para indicar el numero de elementos en la pila:
Código
  1. #define NUM_ELEM  100
  2.  
  3. /* ... */
  4.  
  5. int pila[NUM_ELEM];
  6.  
  7. /* etc */


En cuanto a las dos operaciones básicas en una pila estas son push y pop con un indicador de posición con un valor inicial a cero. Ese es el problema en tu programa.

La operación push debería ser:
1) Agregar el elemento
2) Incrementar el contador

La operación pop debería ser:
1) Decrementas el contador
2) Sacas el elemento

Al hacerlo así el contador de posición indicara en todo momento el numero de elementos en la pila.

Un saludo