Hola;
yo queria saber el error que tengo en el código ya que lo he mirado varias veces y nose cual es.
El fallo está al apilar los datos en la pila y al desapilarlos. 
Gracias. 
Si me pudieran contestar lo antes posible se lo agradeceria.
//LIBRERIAS UTILIZADAS 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM 5
//DEFINICION DE ESTRUCTURA A UTILIZAR
struct info
{
   char cadena[20];
   float numero;
   struct info *siguiente;
};
//FUNCIÓN DE APILAR LOS DATOS 
int apilar(struct info *pila1,struct info *paux, int num)
{
   if(num==(TAM))
      return(num);
   else
      {
      pila1[num].numero=paux->numero;
      strcpy(pila1[num].cadena,paux->cadena);
      num++;
      return 0;
      }
}
//FUNCIÓN DE DESAPILAR DATOS 
int desapilar(struct info *pila1, struct info *paux, int num)
{
    int i;
   if(num==-1)
      return (num);
   else
   {
      paux->numero=pila1[0].numero;
      strcpy(paux->cadena,pila1[0].cadena);
      for(i=0;i<num;i++)
      {
       pila1.numero=pila1[i+1].numero;
       strcpy(pila1.cadena,pila1[i+1].cadena);
      }
      return 0;
   }
}
//FUNCIÓN PRINCIPAL
int main(void)
{
struct info pila1[TAM],aux;
int res, opcion=0, num=0,i;
while(opcion!=5)
{
   printf("\nElija una opcion: \n1)Apilar \n2)Desapilar \n3)Resetear \n4) Listar \n5)Salir\n");
   scanf("%d",&opcion);
   switch(opcion)
      {
      case 1:
      {
         printf("\nIntroduce una cadena: ");
         scanf("%s",aux.cadena);
         printf("\nIntroduce un numero: ");
         scanf("%f",&aux.numero);
         res = apilar(&pila1[num],&aux,num);
         if (res ==TAM)
            {
            printf("\nLa pila esta llena");
            break;
            }
         else
            {
            printf("\nLos datos introducidos son: %s, %f.",pila1[num].cadena,pila1[num].numero);
            num++;
            break;
            }
      }
      case 2:
            res = desapilar(&pila1[num], &aux,num);
         if (res < 0)
            {
            printf("\nLa pila esta vacia");
            break;
            }
         else
            {
            printf("\nLos datos extraidos son: %s, %f.",aux.cadena,aux.numero);
            num--;
            break;
            }
      case 3:
            {
            printf("\nLa pila se ha vaciado.");
            num=-1;
            break;
            }
      case 5:
            {
            printf("\nFin de la aplicacion ");
            break;
            }
      case 4:
            {
            printf("\nLos datos en estos momentos son: \n");
            for(i=0;i<num;i++)
            {
               printf("\n \nDato %d de la pila",i+1);
               printf("\n %s", pila1.cadena);
               printf("\n %f",pila1.numero);
            }
            break;
            }
      default:
         {
         printf("\n Opcion erronea.");
         break;
         }
   } //Fin del switch
} //Fin del while
getchar();
getchar();
return 0;
}
//FIN DEL CÓDIGO


 
  




 Autor
 Autor
		


 En línea
									En línea
								




