#include "backtracking.h"
#include "galeshapley.h"
#include "parser.h"
+#include "timer.h"
#include <iostream>
int
main(int argc, char* argv[])
{
+ Susanita* susanita = 0;
switch (argc)
{
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();
-
+ // 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;
}
-
- // 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;
- }
-
- bt.casamentear();
-
+ // Ver anterior
+ susanita = new BackTracking (Parser::get_n(argv[1]) * 4);
break;
- }
-
default:
std::cerr << "Uso: " << argv[0] << " archivo_entrada [-bt]\n";
- return 1;
+ return 2;
}
-
+ Parser p(*susanita);
+ if (!p.input(argv[1]))
+ {
+ std::cerr << "Error al abrir el archivo '" << argv[1] << "'\n";
+ delete susanita;
+ return 3;
+ }
+ timer t;
+ susanita->casamentear();
+ p.output();
// Todo OK
+ delete susanita;
return 0;
}
-