X-Git-Url: https://git.llucax.com/z.facultad/75.29/susanita.git/blobdiff_plain/a86e26ae42584c979262de7f6ddefa815ac7c625..dfd0218b2eec273821401b2715f177b7b2de7a22:/src/main.cpp diff --git a/src/main.cpp b/src/main.cpp index 7376740..3ca0e02 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,25 +1,50 @@ +#include "backtracking.h" #include "galeshapley.h" #include "parser.h" +#include "timer.h" #include -int main(int argc, char* argv[]) +int +main(int argc, char* argv[]) { - if (argc != 2) + Susanita* susanita = 0; + switch (argc) { - std::cerr << "Uso: " << argv[0] << " [archivo_entrada]\n"; - return 1; + case 2: //Gale-Sharpley por default + // N * 2 para asegurar que el hash este ocupado al 50% y sea O(1) + susanita = new GaleShapley(Parser::get_n(argv[1]) * 2); + break; + case 3: // BackTracking se especifica con tercer parĂ¡metro "-bt" + if (strcmp(argv[2], "-bt")) + { + std::cerr << "Uso: " << argv[0] << " archivo_entrada [-bt]\n"; + return 1; + } + // N * 2 para asegurar que el hash este ocupado al 50% y sea O(1) + susanita = new BackTracking (Parser::get_n(argv[1]) * 2); + break; + default: + std::cerr << "Uso: " << argv[0] << " archivo_entrada [-bt]\n"; + return 2; } - GaleShapley gs; - Parser p(gs); + // N * 2 para asegurar que el hash este ocupado al 50% y sea O(1) + Parser p(*susanita); if (!p.input(argv[1])) { std::cerr << "Error al abrir el archivo '" << argv[1] << "'\n"; - return 2; + delete susanita; + return 3; } - gs.casamentear(); + timer t; + susanita->casamentear(); + std::cerr << t << "\n"; p.output(); -} + // Todo OK + delete susanita; + return 0; + +}