]> git.llucax.com Git - z.facultad/75.29/susanita.git/blob - src/susanita.cpp
Eliminar pregunta-comentario que ya esta resuelto.
[z.facultad/75.29/susanita.git] / src / susanita.cpp
1 #include "susanita.h"
2 #include <cassert>
3 #include <iostream>
4 #include <algorithm>
5
6 Susanita::
7 Susanita(size_type capacidad):
8         nombres(capacidad)
9 {
10 }
11
12 // Uso interno
13 namespace
14 {
15         /// Mata a una persona
16         void matar(Persona* p)
17         {
18                 delete p;
19         }
20 }
21
22 Susanita::
23 ~Susanita()
24 {
25         std::for_each(hombres.begin(), hombres.end(), matar);
26         std::for_each(mujeres.begin(), mujeres.end(), matar);
27 }
28
29 void
30 Susanita::
31 add_persona(Persona* pp)
32 {
33         assert(nombres[pp->nombre] == 0); // Muere si hay nombres repetidos
34
35         nombres[pp->nombre] = pp;
36         switch (pp->sexo)
37         {
38                 case Persona::M:
39                         hombres.push_back(pp);
40                         break;
41                 case Persona::F:
42                         mujeres.push_back(pp);
43                         break;
44                 default:
45                         assert("Una persona no es ni mujer ni hombre!");
46         }
47 }
48
49 Persona*
50 Susanita::
51 get_persona(const std::string& nombre)
52 {
53         return nombres[nombre];
54 }
55
56 void
57 Susanita::
58 mostrar_estado(int mostrar_prios) const
59 {
60         personas_type::const_iterator ih;\r
61         std::cout << "Personas\n";
62         for (ih = hombres.begin();
63                         ih != hombres.end(); ++ih)
64                 std::cout << **ih << "\n";
65         std::cout << "\n";
66         for (personas_type::const_iterator im = mujeres.begin();
67                         im != mujeres.end(); ++im)
68                 std::cout << **im << "\n";
69         std::cout << "\n" << std::endl;
70
71         if (mostrar_prios)
72                 return;
73
74         std::cout << "Prioridades\n";
75         for (ih = hombres.begin();
76                         ih != hombres.end(); ++ih) {
77                 Persona& h = **ih;
78                 std::cout << h << "\n";
79                 for (personas_type::iterator im = h.prefs.begin();
80                                 im != h.prefs.end(); ++im) {
81                         Persona &p = **im;
82                         std::cout << "\t" << p << "\n";
83                 }
84         }
85         std::cout << "\n";
86         for (ih = mujeres.begin();
87                         ih != mujeres.end(); ++ih) {
88                 Persona& h = **ih;
89                 std::cout << h << "\n";
90                 for (personas_type::iterator im = h.prefs.begin();
91                                 im != h.prefs.end(); ++im) {
92                         Persona &p = **im;
93                         std::cout << "\t" << p << "\n";
94                 }
95         }
96 }
97