Esempio n. 1
0
void CargarEntrada(Grafo& grafo, Vertice& u, Vertice& v, double& K) 
{
	unsigned int cantVertices;
	unsigned int cantAristas;
	unsigned int numVerticeInicial;
	unsigned int numVerticeFinal;

	cin >> cantVertices >> cantAristas >> numVerticeInicial >> numVerticeFinal >> K;
	assert(cantVertices > 0 && "cantidad de vertices incorrecta");
	assert(cantAristas >= 0 && "cantidad de aristas incorrecta");
	assert(numVerticeInicial > 0 && numVerticeFinal > 0 && numVerticeFinal <= cantVertices && numVerticeInicial <= cantVertices && "vertices u,v incorrectos");
	assert(K > 0 && "K incorrecto");
	
	grafo = Grafo(cantVertices);
	u = Vertice(numVerticeInicial);
	v = Vertice(numVerticeFinal);
	
	for (unsigned int i = 1; i <= cantAristas; i++) {

		unsigned int v1;
		unsigned int v2;
		double peso1;
		double peso2;
		
		cin >> v1 >> v2 >> peso1 >> peso2;
		assert(0 < v1 && v1 <= cantVertices && 0 < v2 && v2 <= cantVertices && "aristas incorrectas");
		assert(peso1 >= 0 && peso2 >= 0 && "pesos incorrectos");
		
		Arista e = Arista(Vertice(v1), Vertice(v2), peso1, peso2);
		grafo.AgregarArista(e);

	}

	cin.ignore(1); //Ignora el newline a continuación, dejando como siguiente caracter el primer dato de la próxima instancia.
}	
Esempio n. 2
0
/// FUNCION PARA OBETENER LA ARISTA
Arista Elemento::getAri(Nodo n){
	for(int i=0;i<aristas.size();i++){
		/// HACEMOS VECTORES CON LA MISMA DIRECCION QUE LAS NORMALES
		/// Y LOS COMPARAMOS CON EL VECTOR n QUE ES UNA NORMAL ORTOGONAL
		double a = (aristas[i]->midPoint - midPoint) * n;
		if(a > 0.00001)
			return *aristas[i];
	}
	return Arista();
}