Título: fallo al mostrar y buscar los datos insertados Publicado por: baisa en 5 Abril 2011, 15:05 pm 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; } } } |