+#include "backtracking.h"
#include "galeshapley.h"
#include "parser.h"
#include <iostream>
-int main(int argc, char* argv[])
+int
+main(int argc, char* argv[])
{
- if (argc != 2)
+ 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)
+ GaleShapley gs(Parser::get_n(argv[1]) * 2);
+ Parser p(gs);
+
+ if (!p.input(argv[1]))
+ {
+ std::cerr << "Error al abrir el archivo '" << argv[1] << "'\n";
+ return 2;
+ }
+ gs.casamentear();
+ p.output();
+
+ 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;
+ }
- GaleShapley gs;
- Parser p(gs);
+ // N * 2 para asegurar que el hash este ocupado al 50% y sea O(1)
+ BackTracking bt(Parser::get_n(argv[1]) * 2);
+ Parser p(bt);
- if (!p.input(argv[1]))
- {
- std::cerr << "Error al abrir el archivo '" << argv[1] << "'\n";
- return 2;
+ if (!p.input(argv[1]))
+ {
+ std::cerr << "Error al abrir el archivo '" << argv[1] << "'\n";
+ return 2;
+ }
+
+ bt.casamentear();
+
+ break;
+ }
+
+ default:
+ std::cerr << "Uso: " << argv[0] << " archivo_entrada [-bt]\n";
+ return 1;
}
- gs.casamentear();
- p.output();
+
+ // Todo OK
+ return 0;
+
}