target = tdatp2
-objetos = persona.o hashtable.o susanita.o galeshapley.o backtracking.o parser.o main.o
+objetos = persona.o hashtable.o susanita.o galeshapley.o backtracking.o parser.o timer.o main.o
all: $(target)
-persona_h = persona.h
+persona_h= persona.h
persona.o: persona.cpp $(persona_h)
-hashtable_h = hashtable.h $(persona_h)
+hashtable_h= hashtable.h $(persona_h)
hashtable.o: hashtable.cpp $(hashtable_h)
-susanita_h = susanita.h $(hashtable_h)
+susanita_h= susanita.h $(hashtable_h)
susanita.o: susanita.cpp $(susanita_h)
-galeshapley_h = galeshapley.h $(susanita_h)
+galeshapley_h= galeshapley.h $(susanita_h)
galeshapley.o: galeshapley.cpp $(galeshapley_h)
-backtracking_h = backtracking.h $(susanita_h)
+backtracking_h= backtracking.h $(susanita_h)
backtracking.o: backtracking.cpp $(backtracking_h)
-parser_h = parser.h $(susanita_h)
+parser_h= parser.h $(susanita_h)
parser.o: parser.cpp $(parser_h)
-main.o: main.cpp $(parser_h) $(galeshapley_h) ${bactraking_h}
+timer_h= timer.h
+timer.o: timer.cpp $(timer_h)
+
+main.o: main.cpp $(timer_h) $(parser_h) $(galeshapley_h) $(bactraking_h)
$(target): $(objetos)
$(CXX) $(LDFLAGS) $(objetos) $(LOADLIBES) $(LDLIBS) -o $(target)
#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();
-
+ 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)
- 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();
-
+ susanita = new BackTracking (Parser::get_n(argv[1]) * 2);
break;
- }
-
default:
std::cerr << "Uso: " << argv[0] << " archivo_entrada [-bt]\n";
- return 1;
+ return 2;
+ }
+
+ // 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";
+ delete susanita;
+ return 3;
}
+ timer t;
+ susanita->casamentear();
+ std::cerr << t << "\n";
+ p.output();
// Todo OK
+ delete susanita;
return 0;
}
-