]> git.llucax.com Git - z.facultad/75.29/susanita.git/blob - src/susanita.cpp
Agregar el generador de testcases y dos listas con nombres mexicanos.
[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(int mostrar_prios) const
44 {
45         std::cout << "Personas\n";
46         for (personas_type::const_iterator ih = hombres.begin();
47                         ih != hombres.end(); ++ih)
48                 std::cout << **ih << "\n";
49         std::cout << "\n";
50         for (personas_type::const_iterator im = mujeres.begin();
51                         im != mujeres.end(); ++im)
52                 std::cout << **im << "\n";
53         std::cout << "\n" << std::endl;
54
55         if (mostrar_prios)
56                 return;
57
58         std::cout << "Prioridades\n";
59         for (personas_type::const_iterator ih = hombres.begin();
60                         ih != hombres.end(); ++ih) {
61                 Persona& h = **ih;
62                 std::cout << h << "\n";
63                 for (personas_type::iterator im = h.prefs.begin();
64                                 im != h.prefs.end(); ++im) {
65                         Persona &p = **im;
66                         std::cout << "\t" << p << "\n";
67                 }
68         }
69         std::cout << "\n";
70         for (personas_type::const_iterator ih = mujeres.begin();
71                         ih != mujeres.end(); ++ih) {
72                 Persona& h = **ih;
73                 std::cout << h << "\n";
74                 for (personas_type::iterator im = h.prefs.begin();
75                                 im != h.prefs.end(); ++im) {
76                         Persona &p = **im;
77                         std::cout << "\t" << p << "\n";
78                 }
79         }
80 }
81