X-Git-Url: https://git.llucax.com/z.facultad/75.29/susanita.git/blobdiff_plain/a86e26ae42584c979262de7f6ddefa815ac7c625..08496388378e6399c127cf6c569f411add13e9a7:/src/main.cpp diff --git a/src/main.cpp b/src/main.cpp index 7376740..b3a5110 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,25 +1,47 @@ +#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 + // 2N*2 para asegurar que el hash este ocupado al 50% + // y sea O(1) (2N porque guarda nombres de mujer y de + // hombre y * 2 para que esté ocupado al 50%) + susanita = new GaleShapley(Parser::get_n(argv[1]) * 4); + 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; + } + // Ver anterior + susanita = new BackTracking (Parser::get_n(argv[1]) * 4); + break; + default: + std::cerr << "Uso: " << argv[0] << " archivo_entrada [-bt]\n"; + return 2; } - - GaleShapley gs; - Parser p(gs); - + 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(); p.output(); -} + // Todo OK + delete susanita; + return 0; +}