Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: baisa en 5 Abril 2011, 15:05 pm



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;
          }
          }
}