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. }
/// 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(); }