X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/6d49476dc3816c4ba38637bc21f44693ca66af32..d1cfb7971a17f744717953a0466ee2efbd53f442:/src/main.cpp?ds=sidebyside diff --git a/src/main.cpp b/src/main.cpp index b41152b..1eedc01 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,17 +3,60 @@ #include "btree.h" #include "clave_fija.h" +void generar_random (std::list &lst, uint n); + int main (int argc, char *argv[]) { - BTree *tree; - ClaveFija c; + std::list lst; + + BTree tree ("test.idx", 64); + + if (argc != 2) { + printf ("Falta parametro cantidad de elementos a agregar\n"); + return 1; + } + + generar_random (lst, atoi(argv[1])); + + std::list::iterator it = lst.begin (); + while (it != lst.end ()) { + ClaveFija c(*it); - tree = new BTree ("test.idx", 1024); + std::cout << "Agregando " << (*it) << std::endl; + tree.AddKey (c); + it++; + } - tree->AddKey (c); + it = lst.begin (); + while (it != lst.end ()) { + ClaveFija c(*it); - delete tree; + if (tree.FindKey (c)) + std::cout << (*it) << " encontrada\n"; + else + std::cout << (*it) << " NO encontrada\n"; + it++; + } return 0; } +void generar_random (std::list &lst, uint n) +{ + /* Genero N numeros aleatorios entre -3*n y 3*n */ + bool *numeros = new bool [6*n+1]; + int random; + + memset (numeros, 0, (6*n+1)*sizeof (bool)); + + srand (time (NULL)); + for (uint i=0; i < n; i++) { + do { + random = 1 + (int)(6.0f * n * rand () / (RAND_MAX + 1.0f) - 3.0f * n); + std::cout << random << std::endl; + } while (numeros[random + 3 * n] == true); + numeros[random + 3 * n] = true; + lst.push_back (random); + } +} +