/* Realizar un programa que permita añadir, modificar, eliminar, mostrar y ordenar alfabeticamente los datos los pacientes de un alergologo. - Los datos de cada paciente estarán formados por el Nombre, apellidos, un codigo de paciente, el tipo de alergia que tiene ( ACAROS, GRAMINEAS o EPITELIO DEL GATO ) El codigo de paciente es un numero entero que asigna el programa de forma automática y que es único. Esto quiere decir que si a un paciente se le asigna un codigo de paciente ( por ejemplo el 9) aunque dicho paciente se elimine ese codigo no se le asignará a otro paciente. - Declarar un tipo de datos que sea una lista de pacientes */ #include #include #define TAMCAD 20 #define TAM 100 // tamano maximo de la lista de pacientes typedef enum { SALIR, ALTA, MODIFICACION, BAJA, MOSTRAR, ORDENAR, FINMENU, LEERNOMBRE } tMenu; int menu (void){ int m; printf ("\n\nElegir la accion: \n\t SALIR \t\t=0 \n\t ALTA\t\t=1 \n\t MODIFICACION \t=2 \n\t BAJA \t\t=3 \n\t MOSTRAR\t=4\n\t ORDENAR\t=5 \n Eleccion : "); fflush(stdin); scanf ("%d", &m); while (m=FINMENU) { printf (" ERROR: Eleccion no permitida " ); printf ("\n\nElegir la accion: \n\t SALIR \t\t=0 \n\t ALTA\t\t=1 \n\t MODIFICACION \t=2 \n\t BAJA \t\t=3 \n\t MOSTRAR\t=4\n\t ORDENAR\t=5 \n Eleccion : "); fflush(stdin); scanf ("%d", &m); } return m; } typedef enum { ACAROS=1, GRAMINEAS, EPITELIO_GATO, ULTALERGIA } tAlergia; typedef struct { char nombre[TAMCAD+1]; char apellidos[2*TAMCAD+1]; int codigoPaciente; tAlergia alergia; } tPaciente; typedef tPaciente tLista[TAM]; // Parametros de Entrada : // - Accion que indica que datos tiene que obtener por teclado, // - El Codigo de cliente cuando este se incorpora (ALTA) a la lista de pacientes // Devuelve : //- Un registro con los datos del paciente introduccidos por teclado tPaciente obtDatosPaciente(int codigo, int accion ) { tPaciente paciente; printf (" Nombre: "); fflush(stdin); gets( paciente.nombre ) ; if (strlen(paciente.nombre)>= TAMCAD) paciente.nombre[TAMCAD]='\0'; printf (" Apellidos: "); fflush(stdin); gets( paciente.apellidos); if (strlen(paciente.apellidos)>= 2*TAMCAD) paciente.apellidos[2*TAMCAD]='\0'; if ( accion == ALTA) paciente.codigoPaciente = codigo; if ( (accion == ALTA) || (accion == MODIFICACION) ) { printf (" Alergia : ACAROS=1, GRAMINEAS=2, EPITELIO_GATO=3 \n"); printf (" \t Alergia : "); scanf( "%d", &paciente.alergia); while ((paciente.alergia=ULTALERGIA) ) { printf ( "\n ERROR: Alergia no conocida " ); printf (" Alergia : ACAROS=1, GRAMINEAS=2, EPITELIO_GATO=3 \n"); printf (" \t Alergia : "); scanf( "%d", &paciente.alergia); } } return paciente; } // Parametros de entrada: // -Datos del paciente que se van a presentar por pantalla void escDatosPaciente( tPaciente paciente){ printf (" Paciente : %d .- %s, %s Alergia ", paciente.codigoPaciente, paciente.apellidos, paciente.nombre); switch (paciente.alergia) { case ACAROS: { puts ("Acaros "); break; } case GRAMINEAS: { puts ("Gramineas "); break; } case EPITELIO_GATO : { puts ("Epiteleo del Gato "); break; } default : { puts (" No conocida "); break; } } } // Parametros de Entrada : // - Tipo : Sera el codigo del paciente que hay que buscar o 0 cuando lo que usuario a // proporcionado es el nombre y apellidos del paciente a buscar, // - Un registro con los datos del paciente (nombre y apellidos) a buscar o no importa si me dan el codigo del paciente // - La Lista de pacientes // - tamaño de la Lista de pacientes // Devuelve : //- La posicion en la lista de pacientes o -1 si no esta en la lista. int BuscarPaciente( tPaciente pac, tLista lPacientes, int tamLista, int tipo ){ int i, enc=-1; if (tipo != 0) // busco un codigo de paciente) { for ( i=0; i0) { p = lPacientes[j]; strcpy( aux, cad2); lPacientes[j]= lPacientes[i]; strcpy( cad2, cad1); lPacientes[i]=p; strcpy( cad1, aux); } } } } // Parametros de Entrada : // - La Lista de pacientes // - tamaño de la Lista de pacientes void MostrarListaPacientes( tLista lPacientes, int tamLista) { int i; printf ("\n\n______ Lista de pacientes \n"); for (i=0; i=0 && i=0 && i