Logo Studenta

funciones

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

#include <stdio.h>
#include "funciones.h"
int ingresarPaciente( struct paciente_s * paciente, int n)
{
 static int i = 0 ;
 if (i > n)
 printf("\nCupos Llenos");
 else
 {
 printf("\nIngrese los datos del paciente");
 printf("\n Nombre: ");
 scanf("%s",paciente[i].nombre);
 printf(" Apellido: ");
 scanf("%s",paciente[i].apellido);
 printf(" DNI: ");
 scanf("%d",&paciente[i].dni);
 printf(" Especialidad (0,1,2): ");
 scanf("%d",&paciente[i].especialidad);
 printf(" Gravedad(0-5): ");
 scanf("%d",&paciente[i].gravedad);
 getchar();
 paciente[i].turno = (i+1) ;
 paciente[i].atendido = 0 ;
 i++;
 }
 return i ;
}
void ordenarPacientes_porGravedad(struct paciente_s * paciente, int n)
{
 int i, j ;
 
 for(i=0; i<n-1; i++)
 {
 for(j=0; j<n-1-i; j++)
 {
 if (paciente[j].gravedad < paciente[j+1].gravedad ) 
 {
 swapp(paciente, j) ;
 }
 }
 } 
}
void ordenarPacientes_porTurno_asc(struct paciente_s * paciente, int n)
{
 int i, j ;
 for(i=0; i<n-1; i++)
 {
 for(j=0; j<n-1-i; j++)
 {
 if (paciente[j].turno > paciente[j+1].turno ) 
 {
 swapp(paciente, j) ;
 }
 }
 } 
}
void ordenarPacientes_porTurno_desc(struct paciente_s * paciente, int n)
{
 int i, j ;
 for(i=0; i<n-1; i++)
 {
 for(j=0; j<n-1-i; j++)
 {
 if (paciente[j].turno < paciente[j+1].turno ) 
 {
 swapp(paciente, j) ;
 }
 }
 } 
}
int atenderPaciente( struct paciente_s * paciente_vec, struct paciente_s * paciente, int n)
{
 int especialidad, flag = 0 , i ;
 
 printf("\nIngrese la especialidad a atender(0,1,2): ");
 scanf("%d",&especialidad);
 getchar();
 ordenarPacientes_porTurno_asc(paciente_vec, n); 
 ordenarPacientes_porGravedad(paciente_vec, n);
 
 for (i = 0 ; flag == 0 && i<n ; i++)
 {
 if( paciente_vec[i].especialidad == especialidad && paciente_vec[i].atendido == 0 )
 {
 paciente_vec[i].atendido = 1 ;
 *paciente = paciente_vec[i];
 flag = 1 ;
 }
 }
 return flag;
}
void imprimirPaciente(struct paciente_s * paciente)
{
 printf("\n\n Nombre: %s",paciente->nombre);
 printf("\n Apellido: %s", paciente->apellido);
 printf("\n DNI: %d", paciente->dni);
 printf("\n Gravedad(0-5): %d",paciente->gravedad); 
 printf("\n Turno: %d",paciente->turno); 
}
void imprimirTotal(struct paciente_s * paciente, int n_pacientes, int n_especialidades)
{
 int i , j;
 ordenarPacientes_porTurno_asc(paciente, n_pacientes);
 for (i=0 ; i<n_especialidades ; i++)
 {
 printf("\n\nEspecialidad: %d",i); 
 for (j=0 ; j<n_pacientes ; j++)
 {
 if (paciente[j].especialidad == i )
 imprimirPaciente (&paciente[j]) ; 
 }
 }
}
void imprimirRestantes(struct paciente_s * paciente, int n_pacientes, int n_especialidades)
{
 int i , j;
 ordenarPacientes_porTurno_desc(paciente, n_pacientes); 
 ordenarPacientes_porGravedad(paciente, n_pacientes);
 for (i=0 ; i<n_especialidades ; i++)
 {
 printf("\n\nEspecialidad: %d",i); 
 for (j=0 ; j<n_pacientes ; j++)
 {
 if (paciente[j].especialidad == i && paciente[j].atendido == 0 )
 imprimirPaciente (&paciente[j]) ;
 }
 }
}
void swapp(struct paciente_s * paciente, int j)
{
 struct paciente_s paciente_auxiliar ;
 paciente_auxiliar = paciente[j];
 paciente[j]=paciente[j+1];
 paciente[j+1]=paciente_auxiliar; 
}

Continuar navegando