Пример #1
0
// Recibe un string de forma "Producto,Producto,Producto" (o sin los corchetes) y devuelve Secuencia<Producto>
Secuencia<Producto> splitProductos(const std::string &productos){
	// MEJORA: Si viene con espacios se rompe
	std::string parseado = productos;
	int sep = parseado.find(',');
	Secuencia<Producto> resultado;
	while (sep != std::string::npos) {
		Producto producto = aProducto(parseado.substr(0, sep));
		resultado.push_back(producto);
		parseado = parseado.substr(sep + 1, -1);
		sep = parseado.find(',');
	}
	resultado.push_back(aProducto(parseado.substr(0,-1)));
	return resultado;
}
Пример #2
0
Secuencia<InfoVueloCruzado> Drone::vuelosCruzados(const Secuencia<Drone>& ds)
{//requiere que todos los drones tengan la misma longitud de vueloRealizado
	if(ds.size()==0) return {};
	//el if es por que si me dan una secuencia vacia se rompe al pedir abajo, ds[0]..-
	Secuencia<InfoVueloCruzado> infoVuelos = {};
	Posicion p = {};
	Secuencia<Posicion> todasLasPos = todasLasPosSinRepetir(ds);
	int cantDrones = 0;
	int momento = 0;
	while(momento < ds[0].vueloRealizado().size()){
		for(int i = 0; i < todasLasPos.size(); i++){
			//miro todasLasPos de los drones que me pasen y me voy fijando cuantos drones en el momento "k" estuvieron en esa posicion.
			//Siempre habra al menos uno, si hay mas de uno, es un cruce.
			for(int j = 0; j < ds.size(); ++j){
				if(ds[j].vueloRealizado()[momento] == todasLasPos[i]){
					cantDrones++;
				}
			}
			if(cantDrones > 1){
				//InfoVueloCruzado es un struct definido en tipos.h
				InfoVueloCruzado info;
				info.posicion =  todasLasPos[i];
				info.cantidadCruces = cantDrones;
				infoVuelos.push_back(info);
			}
			cantDrones = 0;
		}
		momento++;
	}
	return infoVuelos;
}
Пример #3
0
//AUXILIARES
Secuencia<Posicion> todasLasPosSinRepetir(const Secuencia<Drone> &ds)
{
	Secuencia<Posicion> todas = {};
	for(int i = 0; i < ds.size(); ++i){
		for(int j = 0; j < ds[0].vueloRealizado().size(); ++j){
			if(noPertenece(ds[i].vueloRealizado()[j], todas)){
				Posicion pos = ds[i].vueloRealizado()[j];
				todas.push_back(pos);
			}
		}
	}
	return todas;
}