elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  duda en pila con lenguaje c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda en pila con lenguaje c  (Leído 2,716 veces)
king1517

Desconectado Desconectado

Mensajes: 2


Ver Perfil
duda en pila con lenguaje c
« en: 29 Junio 2011, 15:55 pm »

 Ante todo buenos dias y un cordial saludo este es mi problema el programa no me quiere correr ,quisiera saber cuales son mis errores:

ya que soy un poco nuevo en esto



#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

typedef int tipo;


typedef struct Pila

{
    int aux;   
    int dato;
    struct Pila *Sig;

   
}PILAD;



// Funciones R-W



void InsertaPila(PILAD **, tipo);
tipo eliminar(PILAD **);
tipo Tope(PILAD *);
void BorraPila(PILAD **);
void ImprimirPila(PILAD *);


//Funciones.cpp
//Código:

//#include "Directiva.h"

void InsertaPila(PILAD **top ,tipo Elem)

{
    PILAD *Aux = (PILAD *)malloc(sizeof(PILAD));
    Aux->dato=Elem;
    Aux->Sig = *top;
    *top = Aux;

}





void mostrar(PILAD *p)

{
   PILAD *aux;
   aux = p;
   printf("\nElementos existentes en la Pila:\n");
   if(aux == NULL)
   {
      printf("\n No hay Datos en la Pila!...");
   }
   else
   {
      while(aux != NULL)
      {
         printf("--> %i\n",aux->dato);
         aux = aux->sig;
      }
   }

}


void tope(PILAD *p)

{
   PILAD *aux;
   aux = p;
   if (aux != NULL)
   {
      printf("\n\nEl Primer ELEMENTO de la Pila es: %i",aux->dato);
   }
}






tipo eliminar(PILAD **A)
{
    tipo cont;
    PILAD *auxiliar = (PILAD *)malloc(sizeof(PILAD));
    aux =*A;
   
    if(!aux)
    {
        cont = aux->dato;
        *A = (*A)->Sig;
        free(aux); 
        return  cont;     
    }
   
    else
    {
         printf("Pila vacia");
         exit(-1);
    }
}



void Borrar Pila(PILAD **A)

{
     tipo Elem;
     while (!A)

     {
         Elem = eliminar (A);
     }

}




void ImprimirPila(PILAD *A)
{
     PILAD *Aux=(PILAD *)malloc(sizeof(PILAD));
     int Elem;
     for(Aux=A;Aux->Sig!=NULL;Aux=Aux->Sig)
     {
         Elem = Aux->dato;
         printf(" %d \n",Elem);
     }
}





//#include "funciones.cpp"

int main ()
{
     char Opc1;
     int Opc2,aux;
     PILAD *A;
     
     do
     {
         system ("cls");
         printf ("\t\t Estructura Pila Dinamica\n\n\n");
         printf ("1.- Insertar elemento en pila ");
         printf ("\n2.- Quitar elemento de pila");
         printf ("\n3.- Ver el primer elemento y el numero de elemtos en la pila");
         printf ("\n4.- Vaciar la pila");
         printf ("\n5.- Ver elcontenido de la pila");
         printf ("\n6.- Salir de la aplicacion");
         printf ("\n\n\n  Inserta el numero de la funcion a realizar: ");
         scanf ("%d",&Opc2);
         
         switch(Opc2)

         {
             case 1:
                  system("cls");
                  printf ("\n\n Ingresa un numero para insertar en la pila: ");
                  scanf ("%d",&aux);
                  InsertaPila (&A, aux);
             break;
             
             case 2:
                  system("cls");
                  printf ("\n\n El ultimo elemento extraido de la pila es: %d",eliminar(&A));
                 
             break;
             
             case 3:
                  system("cls");
                  printf ("\n\n El primer elemento de la pila es: %d",Tope (A));
             break;
             
             case 4:
                  system("cls");
                  BorrarPila(&A);
                  printf ("\n\n La pila a sido eliminada exitosamente");
                 
             break;             
           
             case 5:
                  System ("cls");                 
                  ImprimirPila(A);
             break;
 
             case 6:                 
                  exit(-1);
             break;
             
             default:
                   system("cls");
                   printf ("La opcion no es valida");
             break;
         }
         


         
         printf ("\n\nDeseas seguir en esta aplicacion [S/N]: ");
         scanf ("%s",&Opc1);
     }


     while ( Opc1 == 'S'  ||  Opc1 == 's' );     
}


En línea

king1517

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: duda en pila con lenguaje c
« Respuesta #1 en: 29 Junio 2011, 16:04 pm »

Ante todo buenos dias y un cordial saludo este es mi problema el programa no me quiere correr ,quisiera saber cuales son mis errores:

ya que soy un poco nuevo en esto



#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

typedef int tipo;


typedef struct Pila

{
    int aux;   
    int dato;
    struct Pila *Sig;

   
}PILAD;



// Funciones R-W



void InsertaPila(PILAD **, tipo);
tipo eliminar(PILAD **);
tipo Tope(PILAD *);
void BorraPila(PILAD **);
void ImprimirPila(PILAD *);


//Funciones.cpp
//Código:

//#include "Directiva.h"

void InsertaPila(PILAD **top ,tipo Elem)

{
    PILAD *Aux = (PILAD *)malloc(sizeof(PILAD));
    Aux->dato=Elem;
    Aux->Sig = *top;
    *top = Aux;

}





void mostrar(PILAD *p)

{
   PILAD *aux;
   aux = p;
   printf("\nElementos existentes en la Pila:\n");
   if(aux == NULL)
   {
      printf("\n No hay Datos en la Pila!...");
   }
   else
   {
      while(aux != NULL)
      {
         printf("--> %i\n",aux->dato);
         aux = aux->sig;
      }
   }

}


void tope(PILAD *p)

{
   PILAD *aux;
   aux = p;
   if (aux != NULL)
   {
      printf("\n\nEl Primer ELEMENTO de la Pila es: %i",aux->dato);
   }
}






tipo eliminar(PILAD **A)
{
    tipo cont;
    PILAD *auxiliar = (PILAD *)malloc(sizeof(PILAD));
    aux =*A;
   
    if(!aux)
    {
        cont = aux->dato;
        *A = (*A)->Sig;
        free(aux); 
        return  cont;     
    }
   
    else
    {
         printf("Pila vacia");
         exit(-1);
    }
}



void Borrar Pila(PILAD **A)

{
     tipo Elem;
     while (!A)

     {
         Elem = eliminar (A);
     }

}




void ImprimirPila(PILAD *A)
{
     PILAD *Aux=(PILAD *)malloc(sizeof(PILAD));
     int Elem;
     for(Aux=A;Aux->Sig!=NULL;Aux=Aux->Sig)
     {
         Elem = Aux->dato;
         printf(" %d \n",Elem);
     }
}





//#include "funciones.cpp"

int main ()
{
     char Opc1;
     int Opc2,aux;
     PILAD *A;
     
     do
     {
         system ("cls");
         printf ("\t\t Estructura Pila Dinamica\n\n\n");
         printf ("1.- Insertar elemento en pila ");
         printf ("\n2.- Quitar elemento de pila");
         printf ("\n3.- Ver el primer elemento y el numero de elemtos en la pila");
         printf ("\n4.- Vaciar la pila");
         printf ("\n5.- Ver elcontenido de la pila");
         printf ("\n6.- Salir de la aplicacion");
         printf ("\n\n\n  Inserta el numero de la funcion a realizar: ");
         scanf ("%d",&Opc2);
         
         switch(Opc2)

         {
             case 1:
                  system("cls");
                  printf ("\n\n Ingresa un numero para insertar en la pila: ");
                  scanf ("%d",&aux);
                  InsertaPila (&A, aux);
             break;
             
             case 2:
                  system("cls");
                  printf ("\n\n El ultimo elemento extraido de la pila es: %d",eliminar(&A));
                 
             break;
             
             case 3:
                  system("cls");
                  printf ("\n\n El primer elemento de la pila es: %d",Tope (A));
             break;
             
             case 4:
                  system("cls");
                  BorrarPila(&A);
                  printf ("\n\n La pila a sido eliminada exitosamente");
                 
             break;             
           
             case 5:
                  System ("cls");                 
                  ImprimirPila(A);
             break;
 
             case 6:                 
                  exit(-1);
             break;
             
             default:
                   system("cls");
                   printf ("La opcion no es valida");
             break;
         }
         


         
         printf ("\n\nDeseas seguir en esta aplicacion [S/N]: ");
         scanf ("%s",&Opc1);
     }


     while ( Opc1 == 'S'  ||  Opc1 == 's' );     
}


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: duda en pila con lenguaje c
« Respuesta #2 en: 29 Junio 2011, 18:28 pm »

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef int tipo;
  5.  
  6. typedef struct Pila
  7. {
  8.    int aux;
  9.    int dato;
  10.    struct Pila *Sig;
  11. } PILAD;
  12.  
  13.  
  14. void InsertaPila(PILAD **, tipo);
  15. tipo eliminar(PILAD **);
  16. int Tope(PILAD *);
  17. void BorraPila(PILAD **);
  18. void ImprimirPila(PILAD *);
  19.  
  20. void InsertaPila(PILAD **top ,tipo Elem)
  21.  
  22. {
  23.    PILAD *Aux = (PILAD *)malloc(sizeof(PILAD));
  24.    Aux->dato=Elem;
  25.    Aux->Sig = *top;
  26.    *top = Aux;
  27.  
  28. }
  29.  
  30. void mostrar(PILAD *p)
  31. {
  32.   PILAD *aux;
  33.   aux = p;
  34.   printf("\nElementos existentes en la Pila:\n");
  35.   if(aux == NULL)
  36.   {
  37.      printf("\n No hay Datos en la Pila!...");
  38.   }
  39.   else
  40.   {
  41.      while(aux != NULL)
  42.      {
  43.         printf("--> %d\n", aux->dato);
  44.         aux = aux->Sig;
  45.      }
  46.   }
  47.  
  48. }
  49.  
  50.  
  51. void tope(PILAD *p)
  52.  
  53. {
  54.   PILAD *aux;
  55.   aux = p;
  56.   if (aux != NULL)
  57.   {
  58.      printf("\n\nEl Primer ELEMENTO de la Pila es: %i",aux->dato);
  59.   }
  60. }
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67. int eliminar(PILAD **A)
  68. {
  69.    tipo cont;
  70.    PILAD *auxiliar = (PILAD *)malloc(sizeof(PILAD));
  71.    PILAD *aux = *A;
  72.  
  73.    if(!aux)
  74.    {
  75.        cont = aux->dato;
  76.        *A = (*A)->Sig;
  77.        free(aux);
  78.        return  cont;
  79.    }
  80.  
  81.    else
  82.    {
  83.         printf("Pila vacia");
  84.         exit(-1);
  85.    }
  86. }
  87.  
  88.  
  89.  
  90. void BorrarPila(PILAD **A)
  91. {
  92.     int Elem;
  93.     while (!A)
  94.  
  95.     {
  96.         Elem = eliminar (A);
  97.     }
  98.  
  99. }
  100.  
  101. void ImprimirPila(PILAD *A)
  102. {
  103.     PILAD *Aux = A;
  104.  
  105.     int Elem;
  106.  
  107. //     for(Aux = A; Aux != NULL; Aux = Aux->Sig)
  108. //     {
  109. //         Elem = Aux->dato;
  110. //         printf(" %d \n", Aux->dato);
  111. //     }
  112.  
  113.        while(Aux != NULL)
  114.        {
  115.            printf(" %d ", Aux->dato);
  116.            Aux = Aux->Sig;
  117.        }
  118. }
  119.  
  120.  
  121.  
  122.  
  123.  
  124. //#include "funciones.cpp"
  125.  
  126. int main ()
  127. {
  128.     char Opc1;
  129.     int Opc2,aux;
  130.     PILAD *A = NULL;
  131.  
  132.     do
  133.     {
  134.         system("cls");
  135.         printf ("\t\t Estructura Pila Dinamica\n\n\n");
  136.         printf ("1.- Insertar elemento en pila ");
  137.         printf ("\n2.- Quitar elemento de pila");
  138.         printf ("\n3.- Ver el primer elemento y el numero de elemtos en la pila");
  139.         printf ("\n4.- Vaciar la pila");
  140.         printf ("\n5.- Ver elcontenido de la pila");
  141.         printf ("\n6.- Salir de la aplicacion");
  142.         printf ("\n\n\n  Inserta el numero de la funcion a realizar: ");
  143.         scanf ("%d",&Opc2);
  144.  
  145.         switch(Opc2)
  146.  
  147.         {
  148.             case 1:
  149.                  system("cls");
  150.                  printf ("\n\n Ingresa un numero para insertar en la pila: ");
  151.                  scanf ("%d",&aux);
  152.                  InsertaPila (&A, aux);
  153.             break;
  154.  
  155.             case 2:
  156.                  system("cls");
  157.                  printf ("\n\n El ultimo elemento extraido de la pila es: %d",eliminar(&A));
  158.  
  159.             break;
  160.  
  161.             case 3:
  162.                  system("cls");
  163.                  //printf ("\n\n El primer elemento de la pila es: %d",Tope (A));
  164.             break;
  165.  
  166.             case 4:
  167.                  system("cls");
  168.                  BorrarPila(&A);
  169.                  printf ("\n\n La pila a sido eliminada exitosamente");
  170.  
  171.             break;
  172.  
  173.             case 5:
  174.                  system("cls");
  175.                  ImprimirPila(A);
  176.             break;
  177.  
  178.             case 6:
  179.                  exit(-1);
  180.             break;
  181.  
  182.             default:
  183.                   system("cls");
  184.                   printf ("La opcion no es valida");
  185.             break;
  186.         }
  187.  
  188.         printf ("\n\nDeseas seguir en esta aplicacion [S/N]: ");
  189.         scanf ("%s",&Opc1);
  190.     }
  191.  
  192.  
  193.     while ( Opc1 == 'S'  ||  Opc1 == 's' );
  194. }
  195.  

Te dejo el programa compilando, tiene bastantes errores, trata de resolverlos sino nos dices para ayudarte.

Algo importante, cuando trabajas con listas enlazadas o pilas, como quieras decirle, cuando vas a empezar a agregar elementos es importante que la inicialices a NULL.

Código
  1. PILAD *A = NULL;

Consejo, usa nombres para las variables que te digan algo, A no es un buen identificador, no dice NADA.

Otra cosa, aunque des la opción de eliminar la pila, debes vaciar la memoria asignada, independientemente de que el usuario no quiera.

Saludos.
« Última modificación: 29 Junio 2011, 18:30 pm por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda acerca de la pila en VB
Programación Visual Basic
Krnl64 4 1,862 Último mensaje 21 Julio 2006, 13:38 pm
por Krnl64
[DUDA] mover a la pila
ASM
blackray 4 3,654 Último mensaje 10 Septiembre 2009, 03:07 am
por blackray
nueva duda pila en C « 1 2 »
Programación C/C++
pakleisito 13 7,940 Último mensaje 28 Mayo 2011, 16:50 pm
por D4RIO
Duda: Crear una pila contando palabras encontradas en un string
PHP
Darkkz 2 2,317 Último mensaje 10 Septiembre 2011, 23:35 pm
por Darkkz
Duda puntero a pila.
Programación General
lanun 0 1,453 Último mensaje 27 Marzo 2014, 20:05 pm
por lanun
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines