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