public void vertice() { Console.WriteLine(); Console.Write("Ingresa una posicion para encontrar un vertice: "); String l = Console.ReadLine(); int posicion = int.Parse(l); posicion = posicion - 1; Vertice verti = (Vertice)vertices[posicion]; Console.WriteLine(); Console.WriteLine("El nombre del vertice seleccionado es: " + verti.getNombre()); Console.Write("Y sus datos son: "); ArrayList datos = new ArrayList(); datos = verti.getDatos(); foreach (var element in datos) { Console.Write("[" + element + "]"); } }
public void nuevoGrafo() { ArrayList listanueva = new ArrayList(); listanueva = newGrafo.getListaDeVertices(); Console.Clear(); Console.WriteLine(" NUEVO GRAFO "); Console.WriteLine("1 - VERTICES"); Console.WriteLine("2 - ARISTAS"); Console.WriteLine("3 - Imprimir matriz de adyacencias"); Console.WriteLine("4 - Imprimir lista de vértices del grafo"); Console.WriteLine("5 - Encontrar un vértice en el grafo"); Console.WriteLine("6 - Buscar todos los caminos posibles entre dos vértices"); Console.WriteLine("7 - Buscar todos los vértices mediante un origen y una distancia"); Console.WriteLine("8 - Volver al menú principal"); String a = Console.ReadLine(); int A = int.Parse(a); switch (A) { case 1: Console.Clear(); Console.WriteLine("1 - Agregar vértice al grafo"); Console.WriteLine("2 - Agregar nuevo dato a un vértice"); Console.WriteLine("3 - Eliminar un vértice"); Console.WriteLine("4 - Volver"); String b = Console.ReadLine(); int B = int.Parse(b); switch (B) { case 1: Console.Clear(); Console.Write("Ingresa el nombre del vértice: "); String nombre = Console.ReadLine(); Console.WriteLine(); Console.Write("Ingresa el dato que contiene el vértice: "); String data = Console.ReadLine(); Vertice nvoVer = new Vertice(nombre); nvoVer.agregarDato(data); newGrafo.agregarVertice(nvoVer); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("El vértice ha sido agregado al grafo. Presiona cualquier tecla para continuar..."); Console.ReadKey(true); nuevoGrafo(); break; case 2: Console.Clear(); Console.Write("Ingresa la posicion del vértice: "); String p = Console.ReadLine(); int P = int.Parse(p); P--; Console.WriteLine(); Console.Write("Ingresa el dato a agregar: "); String datonuevo = Console.ReadLine(); Vertice v = (Vertice)listanueva[P]; v.agregarDato(datonuevo); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("El dato ha sido agregado al vértice " + v.getNombre() + ". Presiona cualquier tecla para continuar..."); Console.ReadKey(true); nuevoGrafo(); break; case 3: Console.Clear(); Console.Write("Ingresa la posicion del vértice a eliminar: "); String o = Console.ReadLine(); int O = int.Parse(o); O--; Vertice vert = (Vertice)listanueva[O]; Console.WriteLine("El vertice seleccionado es: " + vert.getNombre() + ". Estas seguro de eliminarlo? (si/no)"); String c = Console.ReadLine(); if (c == "si") { newGrafo.eliminarVertice(vert); Console.WriteLine(); Console.WriteLine("El vértice ha sido eliminado del grafo. Presiona cualquier tecla para continuar. "); } if (c == "no") { Console.WriteLine(); Console.WriteLine("El vértice no ha sido eliminado del grafo. Presiona cualquier tecla para continuar. "); } Console.ReadKey(true); nuevoGrafo(); break; case 4: nuevoGrafo(); break; } break; case 2: Console.Clear(); Console.WriteLine("1 - Conectar vertices"); Console.WriteLine("2 - Desconectar vértices"); Console.WriteLine("3 - Ver el peso entre dos vértices"); String d = Console.ReadLine(); int D = int.Parse(d); switch (D) { case 1: Console.Clear(); Console.Write("Ingresa la posicion del primer vértice: "); String primero = Console.ReadLine(); Console.Write("Ingresa la posición del segundo vértice: "); String segundo = Console.ReadLine(); int pr = int.Parse(primero); int sg = int.Parse(segundo); pr--; sg--; Vertice pv = (Vertice)listanueva[pr]; Vertice sv = (Vertice)listanueva[sg]; Console.Write("Ingresa el peso que contiene la arista: "); String peso = Console.ReadLine(); newGrafo.conectarVertices(pv, sv, peso); Console.WriteLine(); Console.Write("Los vértices han sido conectados. Presiona cualquier tecla para continuar..."); Console.ReadKey(true); nuevoGrafo(); break; case 2: Console.Clear(); Console.Write("Ingresa la posicion del primer vértice: "); String primervertice = Console.ReadLine(); Console.Write("Ingresa la posición del segundo vértice: "); String segundovertice = Console.ReadLine(); int pr2 = int.Parse(primervertice); int sg2 = int.Parse(segundovertice); pr2--; sg2--; Vertice pv2 = (Vertice)listanueva[pr2]; Vertice sv2 = (Vertice)listanueva[sg2]; newGrafo.desconectarVertices(pv2, sv2); Console.WriteLine(); Console.WriteLine("Los vértices " + pv2.getNombre() + " y " + sv2.getNombre() + " han sido desconectados."); Console.WriteLine("Presiona cualquier tecla para continuar..."); Console.ReadKey(true); nuevoGrafo(); break; case 3: Console.Clear(); Console.Write("Ingresa la posicion del primer vértice: "); String pvp = Console.ReadLine(); Console.Write("Ingresa la posición del segundo vértice: "); String svp = Console.ReadLine(); int pr3 = int.Parse(pvp); int sg3 = int.Parse(svp); pr3--; sg3--; Vertice pv3 = (Vertice)listanueva[pr3]; Vertice sv3 = (Vertice)listanueva[sg3]; ArrayList ady = new ArrayList(); ady = pv3.getAristas(); ArrayList dato = new ArrayList(); foreach (Aristas element in ady) { if (element.getVerDes() == sv3) { dato = element.getPeso(); } } Console.WriteLine(); Console.Write("El peso entre " + pv3.getNombre() + " y " + sv3.getNombre() + " es: "); foreach (var element in dato) { Console.WriteLine("[" + element + "]"); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Presiona cualquier tecla para continuar..."); Console.ReadKey(true); nuevoGrafo(); break; } break; case 3: Console.Clear(); newGrafo.imprimirMatriz(); Console.WriteLine(); Console.WriteLine("Presiona cualquier tecla para continuar..."); Console.ReadKey(true); nuevoGrafo(); break; case 4: Console.Clear(); Console.WriteLine("La lista de vértices del grafo es: "); foreach (Vertice element in listanueva) { Console.Write("[" + element.getNombre() + "]"); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Presiona cualquier tecla para continuar."); Console.ReadKey(true); nuevoGrafo(); break; case 5: Console.Clear(); Console.WriteLine("Para buscar por posicion ingresa 1"); Console.WriteLine("Para buscar por nombre ingresa 2"); String f = Console.ReadLine(); int F = int.Parse(f); switch (F) { case 1: Console.Clear(); Console.Write("Ingresa la posicion del vértice a buscar: "); String e = Console.ReadLine(); int E = int.Parse(e); E--; Vertice v1 = (Vertice)listanueva[E]; ArrayList datos = new ArrayList(); datos = v1.getDatos(); Console.WriteLine(); Console.WriteLine("El vértice seleccionado es: " + v1.getNombre()); Console.WriteLine("Y sus datos son: "); foreach (var element in datos) { Console.Write("[" + element.ToString() + "]"); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Presiona una tecla para continuar..."); Console.ReadKey(true); nuevoGrafo(); break; case 2: Console.Clear(); Console.Write("Ingresa el nombre del vértice a buscar: "); String vert = Console.ReadLine(); foreach (Vertice element in listanueva) { if (element.getNombre() == vert) { ArrayList dat = new ArrayList(); dat = element.getDatos(); Console.WriteLine(); Console.WriteLine("Los datos de " + element.getNombre() + " son: "); foreach (var data in dat) { Console.Write("[" + data.ToString() + "]"); } int pos = listanueva.IndexOf(element); pos++; Console.WriteLine(); Console.WriteLine("POSICION en la lista de vértices: " + pos); Console.WriteLine(); } } Console.WriteLine("Presiona cualquier tecla para continuar."); Console.ReadKey(true); nuevoGrafo(); break; } break; case 6: Console.Clear(); Console.Write("Ingresa la posición del vértice origen: "); String h = Console.ReadLine(); Console.Write("Ingresa la posición del vértice destino: "); String g = Console.ReadLine(); int H = int.Parse(h); int G = int.Parse(g); H--; G--; Vertice verO = (Vertice)listanueva[H]; Vertice verD = (Vertice)listanueva[G]; ArrayList camactual = new ArrayList(); ArrayList todos = new ArrayList(); ArrayList adyacentes = new ArrayList(); ArrayList aux = new ArrayList(); Console.WriteLine(); Console.WriteLine("Los vértices seleccionados son: " + verO.getNombre() + " y " + verD.getNombre()); Console.WriteLine("Los caminos posibles entre estos dos vértices son: "); aux = grafoCatedra.buscarTodosLosCaminos(verO, verD, camactual, todos, adyacentes); foreach (ArrayList l in aux) { foreach (Vertice ver in l) { Console.Write("[" + ver.getNombre() + "]"); } Console.WriteLine(); Console.WriteLine(); } Console.WriteLine("Presiona cualquier tecla para continuar..."); Console.ReadKey(true); nuevoGrafo(); break; case 7: Console.Clear(); Console.Write("Ingresa la posicion del vértice: "); String j = Console.ReadLine(); Console.Write("Ingresa la distancia: "); String i = Console.ReadLine(); int J = int.Parse(j); int I = int.Parse(i); int cont = 0; J--; Vertice v2 = (Vertice)listanueva[J]; ArrayList vertices = new ArrayList(); ArrayList aux1 = new ArrayList(); ArrayList aux2 = new ArrayList(); Console.WriteLine(); Console.WriteLine("Todos los vértices alcanzables desde " + v2.getNombre() + " ,con distancia " + I + ", son:"); Console.WriteLine(); aux1 = grafoCatedra.buscarCaminosPorDistancia(v2, vertices, I, cont); foreach (Vertice v3 in aux1) { Boolean ver = aux2.Contains(v3); if (v2.getNombre() != v3.getNombre()) { if (ver != true) { aux2.Add(v3); } } } foreach (Vertice vert in aux2) { Console.Write("[" + vert.getNombre() + "]"); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Presiona cualquier tecla para continuar..."); Console.ReadKey(true); nuevoGrafo(); break; case 8: ini(); break; } }
public void grafoPre() { ArrayList lista = grafoCatedra.getListaDeVertices(); Console.Clear(); Console.WriteLine(" GRAFOS "); Console.WriteLine("1 - para agregar vértice (No funciona)"); Console.WriteLine("2 - para eliminar un vértice"); Console.WriteLine("3 - para conectar o desconectar aristas de los vértices"); Console.WriteLine("4 - para imprimir la matriz de adyacencias"); Console.WriteLine("5 - para imprimir la lista de vertices del grafo"); Console.WriteLine("6 - para encontrar un vértice"); Console.WriteLine("7 - para buscar todos los caminos posibles entre dos vértices"); Console.WriteLine("8 - para buscar todos los vértices mediante un origen y una distancia"); Console.WriteLine("9 - para volver"); String a = Console.ReadLine(); int A = int.Parse(a); switch (A) { case 1: Console.Clear(); Console.Write("Ingresa el nombre del nuevo vértice: "); String nombre = Console.ReadLine(); Vertice vertice = new Vertice(nombre); Console.WriteLine(); Console.Write("Ingresa el dato que contiene el vértice: "); object dato = Console.ReadLine(); vertice.agregarDato(dato); grafoCatedra.agregarVertice(vertice); Console.WriteLine(); Console.Write("Agregar nuevo dato al vértice? y/n: "); String dec = Console.ReadLine(); if (dec == "y") { Console.WriteLine(); Console.Write("Ingresa el dato a agregar en el vértice: "); object datnew = Console.ReadLine(); vertice.agregarDato(datnew); Console.WriteLine("Nuevo dato agregado. Presiona cualquier tecla para continuar."); Console.ReadKey(true); grafoPre(); break; } else { Console.WriteLine(); } Console.WriteLine("Vértice agregado al grafo. Presiona cualquier tecla para continuar..."); Console.ReadKey(true); grafoPre(); break; case 2: Console.Clear(); Console.Write("Ingresa la posicion del vértice a eliminar: "); String b = Console.ReadLine(); int B = int.Parse(b); B--; Vertice v = (Vertice)lista[B]; Console.WriteLine("El vertice seleccionado es: " + v.getNombre() + ". Estas seguro de eliminarlo? (si/no)"); String c = Console.ReadLine(); if (c == "si") { grafoCatedra.eliminarVertice(v); Console.WriteLine(); Console.WriteLine("El vértice ha sido eliminado del grafo. Presiona cualquier tecla para continuar. "); } if (c == "no") { Console.WriteLine(); Console.WriteLine("El vértice no ha sido eliminado del grafo. Presiona cualquier tecla para continuar. "); } Console.ReadKey(true); grafoPre(); break; case 3: Console.Clear(); Console.Write("Ingresa la posicion del primer vértice: "); String primero = Console.ReadLine(); Console.Write("Ingresa la posición del segundo vértice: "); String segundo = Console.ReadLine(); int pr = int.Parse(primero); int sg = int.Parse(segundo); pr--; sg--; Vertice pv = (Vertice)lista[pr]; Vertice sv = (Vertice)lista[sg]; int pos1 = lista.IndexOf(pv); int pos2 = lista.IndexOf(sg); Console.Clear(); Console.WriteLine("Los vértices seleccionados son: " + pv.getNombre() + " y " + sv.getNombre()); Console.WriteLine("Ingresa 1 para conectar los vértices"); Console.WriteLine("Ingresa 2 para desconectar los vértices"); Console.WriteLine("Ingresa 3 para volver"); String op = Console.ReadLine(); int opcion = int.Parse(op); switch (opcion) { case 1: Console.Clear(); Console.Write("Ingresa su peso: "); object peso = Console.ReadLine(); grafoCatedra.conectarVertices(pv, sv, peso); Console.WriteLine(); Console.WriteLine("Los vértices " + pv.getNombre() + " y " + sv.getNombre() + " fueron conectados"); Console.WriteLine(); Console.WriteLine("Presiona cualquier tecla para continuar."); Console.ReadKey(true); grafoPre(); break; case 2: Console.Clear(); grafoCatedra.desconectarVertices(pv, sv); Console.WriteLine("Los vértices " + pv.getNombre() + " y " + sv.getNombre() + " fueron desconectados."); Console.WriteLine(); Console.WriteLine("Presiona cualquier tecla para continuar."); Console.ReadKey(true); grafoPre(); break; case 3: grafoPre(); break; } Console.ReadKey(true); grafoPre(); break; case 4: Console.Clear(); grafoCatedra.imprimirMatriz(); Console.WriteLine(); Console.WriteLine("Presiona cualquier tecla para continuar."); Console.ReadKey(true); grafoPre(); break; case 5: Console.Clear(); Console.WriteLine("La lista de vértices del grafo es: "); foreach (Vertice element in lista) { Console.Write("[" + element.getNombre() + "]"); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Presiona cualquier tecla para continuar."); Console.ReadKey(true); grafoPre(); break; case 6: Console.Clear(); Console.WriteLine("Para buscar por posicion ingresa 1"); Console.WriteLine("Para buscar por nombre ingresa 2"); String d = Console.ReadLine(); int D = int.Parse(d); switch (D) { case 1: Console.Clear(); Console.Write("Ingresa la posicion del vértice a buscar: "); String e = Console.ReadLine(); int E = int.Parse(e); E--; Vertice v1 = (Vertice)lista[E]; ArrayList datos = new ArrayList(); datos = v1.getDatos(); Console.WriteLine(); Console.WriteLine("El vértice seleccionado es: " + v1.getNombre()); Console.WriteLine("Y sus datos son: "); foreach (var element in datos) { Console.Write("[" + element.ToString() + "]"); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Presiona una tecla para continuar."); Console.ReadKey(true); grafoPre(); break; case 2: Console.Clear(); Console.Write("Ingresa el nombre del vértice a buscar: "); String vert = Console.ReadLine(); foreach (Vertice element in lista) { if (element.getNombre() == vert) { ArrayList dat = new ArrayList(); dat = element.getDatos(); Console.WriteLine(); Console.WriteLine("Los datos de " + element.getNombre() + " son: "); foreach (var data in dat) { Console.Write("[" + data.ToString() + "]"); } int pos = lista.IndexOf(element); pos++; Console.WriteLine(); Console.WriteLine("POSICION en la lista de vértices: " + pos); Console.WriteLine(); } } Console.WriteLine("Presiona cualquier tecla para continuar."); Console.ReadKey(true); grafoPre(); break; } break; case 7: Console.Clear(); Console.Write("Ingresa la posición del vértice origen: "); String f = Console.ReadLine(); Console.Write("Ingresa la posición del vértice destino: "); String g = Console.ReadLine(); int F = int.Parse(f); int G = int.Parse(g); F--; G--; Vertice verO = (Vertice)lista[F]; Vertice verD = (Vertice)lista[G]; ArrayList camactual = new ArrayList(); ArrayList todos = new ArrayList(); ArrayList ady = new ArrayList(); ArrayList aux = new ArrayList(); Console.WriteLine(); Console.WriteLine("Los vértices seleccionados son: " + verO.getNombre() + " y " + verD.getNombre()); Console.WriteLine("Los caminos posibles entre estos dos vértices son: "); aux = grafoCatedra.buscarTodosLosCaminos(verO, verD, camactual, todos, ady); foreach (ArrayList l in aux) { foreach (Vertice ver in l) { Console.Write("[" + ver.getNombre() + "]"); } Console.WriteLine(); Console.WriteLine(); } Console.WriteLine("Presiona cualquier tecla para continuar."); Console.ReadKey(true); grafoPre(); break; case 8: Console.Clear(); Console.Write("Ingresa la posicion del vértice: "); String h = Console.ReadLine(); Console.Write("Ingresa la distancia: "); String i = Console.ReadLine(); int H = int.Parse(h); int I = int.Parse(i); int cont = 0; H--; Vertice v2 = (Vertice)lista[H]; ArrayList vertices = new ArrayList(); ArrayList aux1 = new ArrayList(); ArrayList aux2 = new ArrayList(); Console.WriteLine(); Console.WriteLine("Todos los vértices alcanzables desde " + v2.getNombre() + " ,con distancia " + I + ", son:"); Console.WriteLine(); aux1 = grafoCatedra.buscarCaminosPorDistancia(v2, vertices, I, cont); foreach (Vertice v3 in aux1) { Boolean ver = aux2.Contains(v3); if (v2.getNombre() != v3.getNombre()) { if (ver != true) { aux2.Add(v3); } } } foreach (Vertice vert in aux2) { Console.Write("[" + vert.getNombre() + "]"); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Presiona cualquier tecla para continuar."); Console.ReadKey(true); grafoPre(); break; case 9: ini(); break; } }