Un programa administra los ingresos de los pacientes a una guardia. Cada paciente tiene un código único y se registra su ingreso a la guardia y el tiempo de espera en minutos. Esto se hace en base a las siguientes estructuras:
#define L 30
struct fecha {
int dia;
int mes;
int anio;
};
typedef struct fecha fecha_t;
struct registro {
int codigo;
char nombre[L];
char apellido [L];
fecha_t fechaVisita;
int tiempoEspera;
};
typedef struct registro registro_t;
Se pide resolver las siguientes funciones en archivos guardia.c y guardia.h, con un programa que haga la prueba de su funcionamiento.
a) registro_t* IngresoGuardia(registro_t* p, int* n);
Esta función debe permitir ingresar un paciente en la memoria al final del array. El parámetro n guarda la cantidad de ingresos guardados. La función debe reservar memoria para el nuevo ingreso y luego pedir los datos al usuario. En caso de que el ingreso sea exitoso, el contador n debe ser incrementado y se devuelve el puntero a la nueva locación de memoria reservada.
b) void TiempoEspera(registro_t *p, int n);
Esta función debe imprimir en pantalla la cantidad de pacientes que esperaron mas de 30 minutos, más de 1 hora, más de 2 horas y más de 3 horas. Luego debe imprimir el promedio general de espera.
c) int PacienteMayorDemora (registro_t*p, int n);
Esta función debe imprimir todos los datos del paciente que más esperó y devolver el índice del array.
d) void IngresosMesActual (registro_t*p, int n);
Esta función imprime en pantalla los nombres y apellidos de los pacientes ingresados este mes. Se puede averiguar la fecha actual con el siguiente código:
#include
#include
int main (void){
time_t myTime;
myTime = time(NULL);
struct tm*hoy = localtime(&myTime);
int mesActual = hoy->tm_mon+1;
int anioActual = hoy->tm_year+1900;
printf("mes actual:%d\nAño actual:%d\n", mesActual, anioActual);
return 0;
}
e) void PromediosMensuales (registro_t*p, int n);
Esta función debe imprimir la cantidad de pacientes y el tiempo de espera promedio de cada mes, sin importar el año.