Hola;
Este es el código en el cual tengo un fallo a la hora de mostrar el nombre de los datos insertados y otro también a la hora de vuscar los datos por la edad introducida el nombre lo muestra mal y nose donde esta el error.
Si me pueden ayudar se lo agradezco.
Gracias.
Este es el código;
//LIBRERIAS UTILIZADAS
#include <stdio.h>
#include <stdlib.h>
//ESTRUCTURA A UTILIZAR
typedef struct lalista{
char nombre[100];
float peso;
int edad;
struct lalista *siguiente;
}telemento;
//DECLARACION DE FUNCIONES
telemento *NuevoElemento(void);
void mostrar_lista(telemento *);
void insertar(telemento **, telemento **);
void buscar_por_edad(telemento *, telemento *);
//FUNCION PRINCIPAL
int main(void)
{
telemento *principio=NULL,*final=NULL, *paux=NULL;//punteros a la cola.
int opcion=0;
printf("\nVamos a manejar una lista de enteros.");
while(opcion!=4)
{
printf("\nElija una opcion: \n1)Mostrar \n2)Insertar \n3)Buscar \n4)Salir\n");
scanf("%d",&opcion);
switch(opcion)
{
case 1: printf("\nLa lista actual es: ");
mostrar_lista(principio);
break;
case 2: printf("\nInsertar un nuevo elemento al final de la lista: ");
insertar(&principio,&final);
break;
case 3: printf("\nBuscar por edad: ");
buscar_por_edad(principio,paux); //Devolver en paux el primero de la lista que tenga la edad buscada
break;
case 4: printf("\nFin de la aplicacion: ");
break;
default: printf("\nOpcion incorrecta, pruebe de nuevo\n");
} //Fin del switch
} //Fin del while
return 0;
} //Fin de main
telemento *NuevoElemento(void)
{
telemento *q=((telemento *)malloc(sizeof(telemento)));
if(!q){
printf("Error\n");
exit(1);
}
return q;
}
void mostrar_lista(telemento *principio)
{
telemento *puntero;
puntero=principio;
if(puntero==NULL)
{
printf("Cola vacia\n");
}
else{
puntero=principio;
while(puntero!=NULL)
{
printf("%s %f %d",puntero->nombre, puntero->peso, puntero->edad);
puntero=puntero->siguiente;
}
}
}
void insertar(telemento **principio,telemento **final)
{
telemento *puntero_inicio,*puntero_final,*puntero;
char nombre[100];
float peso;
int edad;
fflush(stdin);
printf("Nombre: ");
gets(nombre);
printf("Peso: ");
scanf("%f",&peso);
printf("Edad: ");
scanf("%d",&edad);
puntero_inicio=*principio;//Puntero al inicio de la cola.
puntero_final=*final; //Puntero al final de la cola.
puntero=NuevoElemento();
strcpy(nombre,puntero->nombre);//Metemos los datos.
puntero->peso=peso;
puntero->edad=edad;
puntero->siguiente=NULL;//El ultimo apuntara a NULL.
if(puntero_inicio==NULL)//la cola esta vacia.
{
puntero_inicio=puntero;
puntero_final=puntero;
}
else{
puntero_final->siguiente=puntero;
puntero_final=puntero;
}
*final=puntero_final;
*principio=puntero_inicio;
}
void buscar_por_edad(telemento *principio, telemento *paux)
{
telemento *puntero;
puntero=principio;
if(puntero==NULL)
{
printf("Cola vacia\n");
}
else{
int buscar;
printf("Busqueda por edad: ");
scanf("%d",buscar);
puntero=principio;
while(puntero!=NULL)
{
if(puntero->edad==buscar)
{
printf("%s %f %d",puntero->nombre, puntero->peso, puntero->edad);
paux=puntero;
}
else
{
printf("No hay nadie con esa edad");
}
puntero=puntero->siguiente;
}
}
}