// // main.c // T1_ej22 // // Created by Mari Paz Guerrero Lebrero on 14/1/15. // Copyright (c) 2015 Mari Paz Guerrero Lebrero. All rights reserved. // #include #include #define MAXI 100 #define DIAS 30 typedef struct{ float temperatura; int presion_max; int presion_min; int pulsaciones; }Medidas; typedef struct{ char dni[9]; char nombre[20]; char apellidos[50]; int telefono; Medidas m[DIAS]; }Paciente; int Menu(); void InicializarDatos(Paciente p[], int n); Medidas CalculaValoresMedios(Medidas m[]); void ListarPacientes(Paciente p[], int n); void ListaTension(Paciente p[], int n, int tmax_i, int tmax_s, int tmin_i, int tmin_s); int main() { Paciente p[MAXI]; int op, i = 0, tmax_i, tmax_s, tmin_i, tmin_s; op = Menu(); while(op != 4) { switch(op) { case 1:{ InicializarDatos(p, i); i++; break; } case 2:{ ListarPacientes(p, i); break; } case 3:{ printf("Introduzca los limites de tension maxima: "); scanf("%d%d", &tmax_i, &tmax_s); printf("Introduzca los limites de tension minima: "); scanf("%d%d", &tmin_i, &tmin_s); ListaTension(p, i, tmax_i, tmax_s, tmin_i, tmin_s); break; } default:printf("Opcion incorrecta\n"); } op = Menu(); } return 0; } int Menu() { int op; printf("-------------------------------------------\n"); printf(" MENU \n"); printf("-------------------------------------------\n"); printf("\t1. Inicializar datos\n"); printf("\t2. Listar todos los pacientes\n"); printf("\t3. Mostrar pacientes que estan dentro de un rango de tension\n"); printf("\t4. Salir\n"); printf("Seleccione una opcion: "); scanf("%d", &op); return op; } void InicializarDatos(Paciente p[], int n) { int i; printf("Introduzca el DNI del paciente: "); fflush(stdin); gets(p[n].dni); printf("Introduzca el nombre del paciente: "); gets(p[n].nombre); printf("Introduzca los apellidos del paciente: "); gets(p[n].apellidos); printf("Introduzca el telefono del paciente: "); scanf("%d", &p[n].telefono); printf("Introduzca las medidas realizadas durante %d dias:\n", DIAS); for(i = 0; i < DIAS; i++) { printf("Dia %d\n", i + 1); printf("\tIntroduzca la temperatura: "); scanf("%f", &p[n].m[i].temperatura); printf("\tIntroduzca la presion maxima: "); scanf("%d", &p[n].m[i].presion_max); printf("\tIntroduzca la presion minima: "); scanf("%d", &p[n].m[i].presion_min); printf("\tIntroduzca las pulsaciones: "); scanf("%d", &p[n].m[i].pulsaciones); } } void ListarPacientes(Paciente p[], int n) { int i; Medidas m; for(i = 0; i < n; i++) { printf("Paciente %d: \n", i + 1); printf("\tDNI: "); puts(p[i].dni); printf("\tNombre: "); puts(p[i].nombre); printf("\tApellidos: "); puts(p[i].apellidos); printf("\tTelefono: %d\n", p[i].telefono); printf("\tValores medios: \n"); m = CalculaValoresMedios(p[i].m); printf("\t\tTemperatura: %f\n", m.temperatura); printf("\t\tPresion maxima: %d\n", m.presion_max); printf("\t\tPresion minima: %d\n", m.presion_min); printf("\t\tPulsaciones: %d\n", m.pulsaciones); } } Medidas CalculaValoresMedios(Medidas m[]) { Medidas media; int i; media.temperatura = 0; media.presion_max = 0; media.presion_min = 0; media.pulsaciones = 0; for(i = 0; i < DIAS; i++) { media.temperatura = media.temperatura + m[i].temperatura; media.presion_max = media.presion_max + m[i].presion_max; media.presion_min = media.presion_min + m[i].presion_min; media.pulsaciones = media.pulsaciones + m[i].pulsaciones; } media.temperatura = media.temperatura / DIAS; media.presion_max = media.presion_max / DIAS; media.presion_min = media.presion_min / DIAS; media.pulsaciones = media.pulsaciones / DIAS; return media; } void ListaTension(Paciente p[], int n, int tmax_i, int tmax_s, int tmin_i, int tmin_s) { Medidas m; int i; for(i = 0; i < n; i++) { m = CalculaValoresMedios(p[i].m); if(m.presion_max > tmax_i && m.presion_max < tmax_s && m.presion_min > tmin_i && m.presion_min < tmin_s) { printf("DNI: "); puts(p[i].dni); printf("Nombre: ");puts(p[i].nombre); printf("Apellidos: "); puts(p[i].apellidos); printf("Telefono: %d\n", p[i].telefono); printf("-------------------------------------------\n"); } } }