forked from programacion-desde-cero/Ejemplos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuso_de_find_para_buscar_elementos.cpp
105 lines (80 loc) · 2.53 KB
/
uso_de_find_para_buscar_elementos.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
//Explicación: https://youtu.be/cLKcJE87I5w
#include <iostream>
#include <string>
#include <map>
#include <vector>
using namespace std;
struct Persona{
string nombre;
int legajo;
};
map<string,vector<Persona>> cargarDatos(map<string,vector<Persona>> contenedor){
Persona persona;
persona.nombre="Marcela Lagos";
persona.legajo=189;
contenedor["Administracion"].push_back(persona);
persona.nombre="Joaquin Huerta";
persona.legajo=426;
contenedor["Produccion"].push_back(persona);
persona.nombre="Ricardo Gimenez";
persona.legajo=165;
contenedor["Administracion"].push_back(persona);
persona.nombre="Jessica Williams";
persona.legajo=329;
contenedor["Capacitaciones"].push_back(persona);
persona.nombre="Jonathan Rojas";
persona.legajo=253;
contenedor["Produccion"].push_back(persona);
persona.nombre="Julia Dominguez";
persona.legajo=397;
contenedor["Capacitaciones"].push_back(persona);
persona.nombre="Rodolfo Quinteros";
persona.legajo=562;
contenedor["Produccion"].push_back(persona);
persona.nombre="Estela Moreno";
persona.legajo=716;
contenedor["Produccion"].push_back(persona);
persona.nombre="Marcelo Ramirez";
persona.legajo=296;
contenedor["Produccion"].push_back(persona);
return contenedor;
}
vector<Persona> insertarOrdenado(vector<Persona> v, Persona p){
auto elemento = begin(v);
while ((elemento != end(v)) and ((*elemento).legajo <= p.legajo)){
elemento++;
}
if (elemento == end(v)){
v.push_back(p);
}
else{
v.insert(elemento, p);
}
return v;
}
vector<Persona> filtrarEmpleados(map<string,vector<Persona>> empleados, string area){
vector<Persona> nuevo;
for (auto emp = begin(empleados[area]); emp != end(empleados[area]); emp++){
nuevo=insertarOrdenado(nuevo, (*emp));
}
return nuevo;
}
void imprimir(vector<Persona> contenedor){
for (auto emp = begin(contenedor); emp != end(contenedor); emp++){
cout << "Nombre: " << emp->nombre << " - Legajo: " << emp->legajo << endl;
}
}
int main()
{
map<string,vector<Persona>> empleados;
empleados=cargarDatos(empleados);
string area;
do{
cout << "Area a filtrar: ";
cin >> area;
} while (empleados.find(area) == end(empleados));
vector<Persona> filtrado;
filtrado=filtrarEmpleados(empleados, area);
imprimir(filtrado);
return 0;
}