Hola. Estoy realizando un proyecto de clinica Veterinaria y tengo un error.

Iniciado por JoseLAP1995, 15 Marzo 2016, 15:39 PM

0 Miembros y 1 Visitante están viendo este tema.

JoseLAP1995

Soy nuevo en el manejo de las listas. Y estoy haciendo todo lo posible xD

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct consulta{
   float peso;
   char serialvacuna[25];
   char tipovacuna[25];
   char diagnostico[250];
   char observaciones[250];
   char fecha[10];
   struct consulta *sig;
}NODOCONSULTA;

typedef struct mascota{
   char nombre[20];
   char animal[20];
   char nacimiento[10];
   char sexo[10];
   char raza[20];//Solo si es perro o gato
   char color[20];//Solo si es perro o gato
   NODOCONSULTA *historialmedico;
   struct mascota *sig;
}NODOMASCOTA;

typedef struct cliente{
   char nombre[50];
   char direccion[100];
   double cedula;
   char telefono[15];
   NODOMASCOTA *listamascotas;
   struct cliente *sig;
}NODOCLIENTE;

NODOMASCOTA* crearNodoMascota(){
   NODOMASCOTA *nuevo;
   nuevo=(NODOMASCOTA*)malloc(sizeof(NODOMASCOTA));
   if(nuevo){
       strcpy(nuevo->nombre, "\0");
       strcpy(nuevo->animal, "\0");
       strcpy(nuevo->nacimiento, "\0");
       strcpy(nuevo->sexo, "\0");
       strcpy(nuevo->raza, "\0");
       strcpy(nuevo->color, "\0");
       nuevo->sig=NULL;
   }
   return nuevo;
}

NODOCONSULTA* crearNodoConsulta(){
   NODOCONSULTA *nuevo;
   nuevo=(NODOCONSULTA*)malloc(sizeof(NODOCONSULTA));
   if(nuevo){
       nuevo->peso=0;
       strcpy(nuevo->serialvacuna, "\0");
       strcpy(nuevo->tipovacuna, "\0");
       strcpy(nuevo->diagnostico, "\0");
       strcpy(nuevo->observaciones, "\0");
       strcpy(nuevo->fecha, "\0");
       nuevo->sig=NULL;
   }
   return nuevo;
}

NODOCLIENTE* crearNodoCliente(){
   NODOCLIENTE *nuevo;
   nuevo=(NODOCLIENTE*)malloc(sizeof(NODOCLIENTE));
   if(nuevo){
       strcpy(nuevo->nombre, "\0");
       strcpy(nuevo->direccion, "\0");
       strcpy(nuevo->telefono, "\0");
       nuevo->cedula=0;
       nuevo->sig=NULL;
   }
   return nuevo;
}

NODOCLIENTE* IniciarLista(){
   NODOCLIENTE *nuevo;
   nuevo=crearNodoCliente();
   nuevo->listamascotas=crearNodoMascota();
   nuevo->listamascotas->historialmedico=crearNodoConsulta();
   return nuevo;
}

void addcliente(NODOCLIENTE **ListaClientes){
   NODOCLIENTE* Nuevo=crearNodoCliente();
   NODOCLIENTE* aux=(*ListaClientes);
   while(aux->sig!=NULL){
       aux=aux->sig;
   }
   printf("Ingrese nombre del cliente: ");
   gets(Nuevo->nombre);
   fflush(stdin);
   printf("Ingrese direccion de hogar: ");
   gets(Nuevo->direccion);
   fflush(stdin);
   printf("Ingrese cedula del cliente (Sin Puntos ni Espacios): ");
   scanf("%ld",&Nuevo->cedula);
   fflush(stdin);
   printf("Ingrese telefono del cliente (Ej: 04161234567): ");
   gets(Nuevo->telefono);
   fflush(stdin);
   Nuevo->sig=NULL;
   aux->sig=Nuevo;
   system("cls");
}

void mostrarclientes (NODOCLIENTE *Clientes){
   NODOCLIENTE *aux;
   aux=crearNodoCliente();
   *aux=*Clientes;
   do{
       aux=aux->sig;
       printf("%ld\n",aux->cedula);
   }while(aux->sig!=NULL);
}

void addmascota(NODOCLIENTE **ListaClientes){
   NODOCLIENTE *busqueda;
   busqueda=crearNodoCliente();
   *busqueda=**ListaClientes;
   mostrarclientes(busqueda);
   int encontrado=0; //Bandera que indica si se encontro el usuario
   double cedauxiliar=0; //Cedule que ingrese el usuario para buscar
   printf("Ingrese la cedula del due%co de la mascota(Sin Puntos ni Espacios): ",164);
   scanf("%ld",&cedauxiliar);
   while(busqueda!=NULL){
       if(cedauxiliar==busqueda->cedula){
           encontrado=1;
           break;
       }
       busqueda=busqueda->sig;
   }
   if(encontrado==1){
       NODOMASCOTA *aux; //En esta linea me da un error
       aux=busqueda->listamascotas;
       if(aux=NULL){
           aux=crearNodoMascota();
       }
       NODOMASCOTA* Nuevo=crearNodoMascota();
       while(aux->sig){
           aux=aux->sig;
       }
       printf("Ingrese nombre de la mascota: ");
       gets(Nuevo->nombre);
       fflush(stdin);
       printf("Ingrese que animal es: ");
       gets(Nuevo->animal);
       fflush(stdin);
       printf("Ingrese fecha de nacimiento(DD/MM/AAAA): ");
       gets(Nuevo->nacimiento);
       fflush(stdin);
       printf("Ingrese su sexo (M/F): ");
       gets(Nuevo->sexo);
       fflush(stdin);
       printf("Ingrese su raza: ");
       gets(Nuevo->raza);
       fflush(stdin);
       printf("Ingrese color del animal: ");
       gets(Nuevo->color);
       fflush(stdin);
       aux->historialmedico=crearNodoConsulta();
       Nuevo->sig=NULL;
       aux->sig=Nuevo;
   }else{
       printf("No se encontro el cliente.\n");
   }
   system("Pause");
   system("cls");
}

int main(){
   NODOCLIENTE *ListaClients;
   ListaClients=IniciarLista();
   addcliente(&ListaClients);
   addcliente(&ListaClients);
   addmascota(&ListaClients);
   return 1;
}



En mi funcion addmascota, el programa se me cierra cuando se logra encontrar la cedula del dueño de la mascota.