]> git.llucax.com Git - z.facultad/75.29/susanita.git/blobdiff - src/main.cpp
Bugfix.
[z.facultad/75.29/susanita.git] / src / main.cpp
index 737674024568b5b627b07e13d1dc6babb90e10c0..3ca0e02a099072f72db2a6d49c008cfd49e4b258 100644 (file)
@@ -1,25 +1,50 @@
+#include "backtracking.h"
 #include "galeshapley.h"
 #include "parser.h"
 #include "galeshapley.h"
 #include "parser.h"
+#include "timer.h"
 #include <iostream>
 
 #include <iostream>
 
-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";
 
        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();
        p.output();
-}
 
 
+       // Todo OK
+       delete susanita;
+       return 0;
+
+}