]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blob - src/main_variable.cpp
Bugfix : Condición base para cortar la recursividad.
[z.facultad/75.52/treemulator.git] / src / main_variable.cpp
1
2
3 #include "btree.h"
4 #include "clave_variable.h"
5 #include <list>
6 #include <map>
7 #include <fstream>
8
9 void generar_aleatorio (std::list<std::string> &lst, uint cant);
10
11 int main  (int argc, char *argv[])
12 {
13         BTree tree ("test.idx", 128, BTree::KEY_VARIABLE);
14         
15         if (argc != 2) {
16                 printf ("Falta parametro cantidad de elementos a agregar\n");
17                 return 1;
18         }
19
20         std::list<std::string> lst;
21         generar_aleatorio (lst, atoi(argv[1]));
22
23         std::list<std::string>::iterator it = lst.begin ();
24         while (it != lst.end ()) {
25                 ClaveVariable c(*it);
26
27                 std::cout << "Agregando " << (*it) << std::endl;
28                 tree.AddKey (c);
29                 it++;
30         }
31         
32         it = lst.begin ();
33         while (it != lst.end ()) {
34                 ClaveVariable c(*it);
35
36                 if (tree.FindKey (c))
37                         std::cout << (*it) << " encontrada\n";
38                 else
39                         std::cout << (*it) << " NO encontrada\n";
40                 it++;
41         }
42
43         return 0;
44 }
45
46 void get_file (const char *f, std::map<int,std::string> &out, int &cant)
47 {
48         std::ifstream reader (f);
49         cant = 0;
50         char l[100];
51
52         while (!reader.eof ()) {
53                 reader.getline (l, 100);
54                 out[cant] = std::string (l);
55                 cant++;
56         }
57 }
58
59
60 void generar_aleatorio (std::list<std::string> &lst, uint n)
61 {
62         std::map<int, std::string> productos;
63         std::map<int, std::string> marcas;
64         int productos_cant, marcas_cant;
65
66         get_file ("productos.txt", productos, productos_cant);
67         get_file ("marcas.txt", marcas, marcas_cant);
68
69         srand (time (NULL));
70         int random1, random2;
71         /* TODO : Evitar repetidos */
72         for (uint i=0; i < n; i++) {
73                         random1 = 1 + (int)(productos_cant * (float)rand () / (RAND_MAX + 1.0f));
74                         random2 = 1 + (int)(marcas_cant * (float)rand () / (RAND_MAX + 1.0f));
75
76                         lst.push_back (productos[random1-1] + " " + marcas[random2-1]);
77         }
78 }
79