]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blob - src/main.cpp
266ba1db03325096792a0f0f85311261e8226e70
[z.facultad/75.52/treemulator.git] / src / main.cpp
1
2
3 #include "btree.h"
4 #include "clave_fija.h"
5 #include "random.h"
6
7 int main  (int argc, char *argv[])
8 {
9         int bloque, altas, bajas;
10
11         if (argc != 4) {
12                 printf ("Uso : %s <block size> <cantidad de altas> <cantidad de bajas>\n", argv[0]);
13                 return 1;
14         }
15
16         bloque = atoi (argv[1]);
17         altas = atoi (argv[2]);
18         bajas = atoi (argv[3]);
19
20         BTree tree ("test.idx", bloque);
21         
22         std::list<int> lst;
23         std::list<int>::iterator it;
24         Random::Init ();
25         Random::Ints (lst, altas);
26
27         double paltas = bajas / (double)altas;
28
29         it = lst.begin ();
30         uint i = 0;
31         while (it != lst.end ()) {
32                 ClaveFija c(*it);
33
34                 double l = Random::Double (0.0f, 1.0f);
35                 std::cout << l << " >= " << paltas << std::endl;
36                 if (l >= paltas) {
37                         tree.AddKey (c);
38                         i++;
39                 } else {
40                         /* Tengo que borrar una clave entre 0 e "i" de la lista
41                          * porque son las que ya agregue. */
42                         int aborrar = (int)Random::Double (0, i) - 1;
43                         std::list<int>::iterator otro = lst.begin ();
44                         int j = 0;
45                         while (j < aborrar) {
46                                 otro++;
47                                 j++;
48                         }
49                         ClaveFija c(*otro);
50
51                         tree.DelKey (c);
52                         std::string sss = c;
53                         std::cout << "Clave Borrada " << sss << std::endl;
54                 }
55
56                 it++;
57         }
58
59         /* TODO : Hacer verificacion de claves :) */
60         return 0;
61 }
62