]> git.llucax.com Git - z.facultad/75.29/susanita.git/blob - src/susanita.cpp
Mover mostrar_estado() de GaleShapley a Susanita.
[z.facultad/75.29/susanita.git] / src / susanita.cpp
1 #include "susanita.h"
2 #include <cassert>
3 #include <iostream>
4
5 Susanita::~Susanita()
6 {
7 }
8
9 void
10 Susanita::
11 add_persona(Persona* pp)
12 {
13         // XXX cual sería el problema que agregue una persona repetida?
14         // Reemplazaría a la anterior nomás
15         assert(nombres.find(pp->nombre) == nombres.end());
16
17         nombres[pp->nombre] = pp;
18         switch (pp->sexo)
19         {
20                 case Persona::M:
21                         hombres.push_back(pp);
22                         break;
23                 case Persona::F:
24                         mujeres.push_back(pp);
25                         break;
26                 default:
27                         assert("Una persona no es ni mujer ni hombre!");
28         }
29 }
30
31 Persona*
32 Susanita::
33 get_persona(const std::string& nombre) const
34 {
35         nombres_type::const_iterator ip = nombres.find(nombre);
36         if (ip == nombres.end()) // No está
37                 return 0;
38         return ip->second;
39 }
40
41 void
42 Susanita::
43 mostrar_estado() const
44 {
45         for (personas_type::const_iterator ih = hombres.begin();
46                         ih != hombres.end(); ++ih)
47                 std::cout << **ih << "\n";
48         std::cout << "\n";
49         for (personas_type::const_iterator im = mujeres.begin();
50                         im != mujeres.end(); ++im)
51                 std::cout << **im << "\n";
52         std::cout << "\n" << std::endl;
53 }
54