Ejemplo n.º 1
0
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"));
}
Ejemplo n.º 2
0
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;
}