-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathClinicaTraumatologica.cpp
138 lines (96 loc) · 2.63 KB
/
ClinicaTraumatologica.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
binarysem sem_medico = 0;
binarysem sem_escayola = 0;
binarysem sem_xray = 0;
binarysem sem_nurse = 1;
/// LLENAR LAS VARIABLES CON LA CANTIDAD DE PACIENTES PARA EL MODELO ///////////
int paciente_rayos = 100, paciente_medico = 100, paciente_escayola = 100;
////////////////////////////////////////////////////////////////////////////////
int sala_medico = 0, sala_escayola = 0;
int total_espera = 0;
void entradasalamedico(){
if (paciente_medico > 20) {
sala_medico = 20;
paciente_medico = paciente_medico - 20;
}
else {
sala_medico = paciente_medico;
}
}
void entradasalaescayola(){
if (paciente_escayola > 6) {
sala_escayola = 6;
paciente_escayola = paciente_escayola - 6;
}
else {
sala_escayola = paciente_escayola;
}
}
void salidasalamedico(){
if(paciente_medico > 20){
sala_medico = sala_medico + 1;
}
else{
sala_medico = paciente_medico;
}
}
void salidasalaescayola(){
if (paciente_escayola > 6 ){
sala_escayola = sala_escayola + 1;
}
else{
sala_escayola = paciente_escayola;
}
}
void xray() {
while (paciente_rayos > 0) {
wait(sem_xray);
paciente_rayos = paciente_rayos - 1;
signal(sem_xray);
}
cout << "Todos los X-Rays están listos" << endl;
}
void medico() {
entradasalamedico();
while (paciente_medico > 0) {
wait(sem_medico);
sala_medico = sala_medico - 1;
paciente_medico = paciente_medico - 1;
salidasalamedico();
signal(sem_medico);
}
cout << "Todas las atenciones médicas están listas" << endl;
}
void escayola() {
entradasalaescayola();
while (paciente_escayola > 0) {
wait(sem_escayola);
sala_escayola = sala_escayola - 1;
paciente_escayola = paciente_escayola - 1;
salidasalaescayola();
signal(sem_escayola);
}
cout << "Todas las escayolas están listas" << endl;
}
void nurse() {
wait(sem_nurse);
total_espera = paciente_medico + paciente_escayola + paciente_rayos;
while (total_espera > 0) {
cout << "Pacientes esperando ser atendidos: " << total_espera << endl;
signal(sem_medico);
wait(sem_medico);
signal(sem_escayola);
wait(sem_escayola);
signal(sem_xray);
wait(sem_xray);
total_espera = paciente_medico + paciente_escayola + paciente_rayos;
}
}
void main() {
cobegin {
nurse();
medico();
escayola();
xray();
}
cout << "Todos los pacientes han sido atendidos " << endl;
}