X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/1f2e83ab78a55bc0730bdd507c4fd64482fb0846..eabe0084451a515b80a7fd462c71b4bb2f8dd7bd:/viewer/main.cpp diff --git a/viewer/main.cpp b/viewer/main.cpp index 7a10f11..fc8782b 100644 --- a/viewer/main.cpp +++ b/viewer/main.cpp @@ -102,7 +102,11 @@ void nuevo_arbol () NewTreeDialog d; if (d.run () == Gtk::RESPONSE_OK) { - uint tot = d.getAmount (); + uint altas = d.getAdds (); + uint bajas = d.getDels (); + + double paltas = bajas / (double)altas; + int type = d.getKeyType (); tree = Glib::RefPtr(new ViewBTree (real_canvas->root(), "test.idx", d.getBlockSize (), type)); tree->signal_selected ().connect ( sigc::mem_fun (*real_frame, &ViewProperties::ShowItem) ); @@ -111,21 +115,43 @@ void nuevo_arbol () std::list lst; std::list::iterator it; Random::Init (); - Random::Ints (lst, tot); + Random::Ints (lst, altas); it = lst.begin (); + uint i = 0; while (it != lst.end ()) { ClaveFija c(*it); - tree->AddKey (c); - vdebug->AddKey (c); + double l = Random::Double (0.0f, 1.0f); + std::cout << l << " >= " << paltas << std::endl; + if (l >= paltas) { + tree->AddKey (c); + i++; + vdebug->AddKey (c); + } else { + /* Tengo que borrar una clave entre 0 e "i" de la lista + * porque son las que ya agregue. */ + int aborrar = (int)Random::Double (0, i); + std::list::iterator otro = lst.begin (); + int j = 0; + while (j < aborrar) { + otro++; + j++; + } + ClaveFija c(*otro); + + tree->DelKey (c); + std::string sss = c; + std::cout << "Clave Borrada " << sss << std::endl; + } + it++; } } else { std::list lst; std::list::iterator it; Random::Init (); - Random::Strings (lst, tot); + Random::Strings (lst, altas); it = lst.begin (); while (it != lst.end ()) {