Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Xcution en 1 Noviembre 2013, 13:44 pm



Título: [C][?]Ayuda a resolver estos errores
Publicado por: Xcution en 1 Noviembre 2013, 13:44 pm
He aquí un programa que hará su función de Gestión bibliotecaria con base en una pila, por favor me gustaría si me pueden ayudar a resolver el problema aquí está el programa..

Código:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>



 
typedef nodo *ptrPila

struct nodo{
    int sgte;
    int nro;
    struct nodo *sgte;
 
};
 
  
      

void push(ptrPila &p, int valor )
{
     ptrPila aux;
     aux = new(struct nodo);  
     aux->nro = valor;
    
     aux->sgte = p ;
     p = aux ;
}
 

void pop( ptrPila &p )
{
     int num ;
     ptrPila aux;
    
     aux = p ;
     num = aux->nro;  
    
     p = aux->sgte ;
     delete(aux);
    
     return num;
}
 

void mostrar_pila( ptrPila p )
{
     ptrPila aux;
     aux = p;    
    
     while( aux !=NULL )
     {
           printf("aux->nro end");        
            aux = aux->sgte;
     }    
}
 

void destruir_pila( ptrPila &&p)
{
     ptrPila aux;
    
     while( p != NULL)
     {
           aux = p;
           p = aux->sgte;
           delete(aux);
     }
}
 

void menu()
{
    printf("\n          Biblioteca San Juan");
    printf("\n 1. Insertar Libros\n");
    printf(" 2. Sacar libro\n");
    printf(" 3. Ver lista de libros\n");
    printf(" 4. Llamar ultimo libro de la pila\n");
    printf(" 5. Presione 5 para salir");
    printf("Elija una opci%cn =>",162);
}
 

int main()
{
    ptrPila p = NULL;  // creando pila
    int dato;
    int op;
    int x ; // numero que devuelve la funcon pop
  
    
 
    do
    {
        menu();  
scanf("%i",&op);
 
        switch(op)
        {
            case 1:
 
                 printf("\n Libros a apilar: ");
scanf("%i",&dato);
                 push( "%p", &dato );
                 printf("Libro apilado...\n\n");
            break;
 
 
            case 2:
 
                 x = pop( p );
                printf("\n\n\Libro " x " desapilado...\n\n");
            break;
                
 
            case 3:
 
                 printf("\n\n Mostrandolista \n\n");
                 if(p!=NULL)
                    mostrar_pila( p );
                 else
                    printf("Lista vacia");
            break;
 
 
            case 4:
 
                 destruir_pila( p );
                 printf("\n Pila de libros eliminada...\n\n");
            break;
          
         }
 
        
        system("pause");
 system("cls");
 
    }while(op!=5);
  
  
    return 0;
}


Título: Re: [C][?]Ayuda a resolver estos errores
Publicado por: vangodp en 1 Noviembre 2013, 20:50 pm
hay como tropecientos errores creo.
te dire unos que eh visto no se si voy bien.
Pero bueno a ver si tallamos la piedra XD
en la linea de typedef quieres crear un puntero ¿No?
seria así o no se si tiene que ser distinto en c++ que es por donde me muevo mejor.
Creo que es así: typedef struct nodo *ptrPila;
Luego dentro de la estructura intentas declarar otra estructura con el mismo nombre o sea 2.
¿creo que quisiste hacer algo como esto?
struct nodo{
    int sgte;
    int nro;
   
 
}; nodo *sgte;

cuando llamas a la funcion push esperas una estructura por referencia sin embargo desde main le envias un int, eso no se si se puede hacer pero a ver si alguien mas ayuda :)
Y podías comentar algo mas tu código que esperas hacer con cada función así seria mas fácil ayudarte.
bueno seguire intentando un rato a ver si le pulimos algo ;)