void agregar_diccionario() { DiccString<Nat> dic; dic.Definir("a", 4); DiccString<Nat> dic2(dic); dic.Definir("coso", 6); ASSERT(dic.Definido("a")); ASSERT_EQ(dic.Significado("a"), 4); ASSERT(dic.Definido("coso")); ASSERT_EQ(dic.Significado("coso"), 6); ASSERT(dic2.Definido("a")); ASSERT_EQ(dic2.Significado("a"), 4); ASSERT(!dic2.Definido("coso")); DiccString<DiccString<Nat> > ddic; ddic.Definir("Test", dic); ASSERT(ddic.Definido("Test")); }
int main(){ DiccString<Nat> mapping = DiccString<Nat>(); string A; string B; int n; cout << "Dame A: "; cin >> A; cout << "\nDame B: "; cin >> B; cout << "\nDame la cantidad de vuelos: "; cin >> n; cout << "\n" << endl; mapping.Definir(A,0); mapping.Definir(B,1); //PREGUNTAR SI HAY PROBLEMA EN RESERVAR MEMORIA LUEGO DE ASIGNAR 2 POSICIONES vector< vector<Vuelo> > salidas(2,vector<Vuelo>()); salidas.reserve(2*n + 2); for (int j = 0; j < n; j++){ string o; string d; int inicio; int f; cout << "Origen de vuelo " << j << ": "; cin >> o; cout << "\nDestino de vuelo " << j << ": "; cin >> d; cout << "\nInicio de vuelo " << j << ": "; cin >> inicio; cout << "\nFin de vuelo " << j << ": "; cin >> f; cout << "\n" << endl; if(!mapping.Definido(o)){ salidas.push_back(vector<Vuelo>()); mapping.Definir(o,mapping.CantClaves()); } if(!mapping.Definido(d)){ salidas.push_back(vector<Vuelo>()); mapping.Definir(d,mapping.CantClaves()); } int intDeCiudadOrigen = mapping.Significado(o); int intDeCiudadDestino = mapping.Significado(d); Vuelo nuevoVueloConstruido = Vuelo(intDeCiudadOrigen, intDeCiudadDestino, inicio, f, j); salidas[intDeCiudadOrigen].push_back(nuevoVueloConstruido); } for(int j = 0; j < salidas.size(); j++){ //SORTING EN LAS SALIDAS vector<Vuelo>& flightToSort = salidas[j]; stable_sort(flightToSort.begin(), flightToSort.end(),orden); } vector< Itinerario > best(mapping.CantClaves(),Itinerario()); vector<bool> disponibles(mapping.CantClaves(), true); Itinerario result = bestWay(0,0,salidas,best,disponibles); printTodo(best); if(!result.llego){ cout << "no" << endl; }else{ cout << best[0].tarda << " "; cout << best[0].cantViajes << " "; Vuelo aux = best[0].siguienteVuelo; cout << aux.ID << " "; // cout << "En " << 0 << " tomar el que va a " << aux.destino; while(aux.destino != 1){ aux = best[aux.destino].siguienteVuelo; cout << aux.ID << " "; // cout << "En " << aux.origen << " tomar el que va a " << aux.destino << "\n\n"; } cout << endl; } return 0; }