private void DikstraForm_Load(object sender, EventArgs e) { for (int i = 0; i < listaV.Count; i++) { ListaK.Add(listaV[i]); } }
public ListaVuelos rehacer(ref ListaVuelos lista, ListaVuelos listaFinal) { if (listaFinal.Count == 0) { for (int i = 0; i < listaVuelos.Count; i++) { string ruta = listaVuelos[i].o + listaVuelos[i].d; if (ruta.Contains(grafito[0].origen)) { lista.Add(listaVuelos[i]); } } } else { for (int i = 0; i < listaFinal.Count; i++) { for (int j = 0; j < listaVuelos.Count; j++) { string ruta = listaVuelos[j].o + listaVuelos[j].d; if (ruta.Contains(listaFinal[i].o) || ruta.Contains(listaFinal[i].d)) { lista.Add(listaVuelos[j]); } } } } for (int i = 0; i < listaFinal.Count; i++) { for (int j = 0; j < lista.Count; j++) { if (listaFinal[i].ruta == lista[j].ruta) { lista.Remove(lista[j]); } } } return(lista); }
private void button1_Click(object sender, EventArgs e) { string origen = textBox1.Text; string destino = textBox2.Text; string rute = "SK1" + textBox1.Text + textBox2.Text; int costo = Int32.Parse(textBox3.Text); int tiempo = Int32.Parse(textBox5.Text); int asientos = 18; bool[] numAsientos = new bool[18]; bool rutaValida = true; for (int i = 0; i < listaVuelos.Count; i++) { if (textBox1.Text == textBox2.Text) { MessageBox.Show("El origen y el destino son iguales", "vuelo no valido", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk); rutaValida = false; break; } if (rute == listaVuelos[i].getRuta()) { MessageBox.Show("La ruta seleccionada ya existe", " Elige una ruta nueva", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk); rutaValida = false; break; } else { rutaValida = true; } } if (rutaValida == true) { for (int k = 0; k < 18; k++) { numAsientos[k] = true; } DateTime fecha = Convert.ToDateTime(dateTimePicker1.Text + " " + dateTimePicker2.Text); Vuelocs vuelo = new Vuelocs(rute, origen, destino, asientos, costo, tiempo, fecha, numAsientos); listaVuelos.Add(vuelo); this.Close(); } }
private void grafoRecorridoT() { Pen arista = new Pen(Color.Blue, 3); SolidBrush colorLetras = new SolidBrush(Color.Black); ListaVuelos listaRecorrido = new ListaVuelos(); int origen = 0; for (int i = 0; i < grafito.Count; i++) { if (destinoBox.Text == grafito[i].origen) { origen = i; } } int destino = 0; for (int i = 0; i < grafito.Count; i++) { if (origenBox.Text == grafito[i].origen) { destino = i; } } int[] listaDij = Dijkstra; int[] ind = new int[grafito.Count]; for (int i = 0; i < grafito.Count; i++) { ind[i] = 100; } int h = 0; bool exist = false; for (int i = 0; i < listaV.Count; i++) { if (grafito[origen].origen == listaV[i].o && grafito[destino].origen == listaV[i].d) { for (int j = 0; j < grafito.Count; j++) { if (ind[j] != 100) { ind[j] = i; listaRecorrido.Add(listaV[i]); h++; break; } } exist = true; } else if (grafito[origen].origen == listaV[i].d && grafito[destino].origen == listaV[i].o) { exist = true; string route = "SK1" + grafito[origen].origen + grafito[destino].origen; Vuelocs v = new Vuelocs(route, listaV[i].o, listaV[i].d, listaV[i].fecha, listaV[i].tiempo, listaV[i].costo); listaV.Add(v); for (int j = 0; j < grafito.Count; j++) { if (ind[j] != 100) { ind[j] = listaV.Count - 1; listaRecorrido.Add(v); h++; break; } } break; } } if (!exist) { int nodoActual = destino; while (nodoActual != origen) { int indice = 0; bool existioDerecho = false; for (int i = 0; i < listaV.Count; i++) { if (grafito[nodoActual].origen == listaV[i].o && grafito[listaDij[nodoActual + grafito.Count * 2]].origen == listaV[i].d) { for (int j = 0; j < grafito.Count; j++) { if (ind[j] == 100) { existioDerecho = true; ind[j] = i; listaRecorrido.Add(listaV[i]); h++; break; } } } else if (grafito[nodoActual].origen == listaV[i].d && grafito[listaDij[nodoActual + grafito.Count * 2]].origen == listaV[i].o && !existioDerecho) { existioDerecho = false; indice = i; } if (i == listaV.Count - 1 && !existioDerecho) { string route = "SK1" + grafito[nodoActual].origen + grafito[listaDij[nodoActual + grafito.Count * 2]].origen; Vuelocs vuelo = new Vuelocs(route, listaV[indice].d, listaV[indice].o, listaV[indice].fecha, listaV[indice].tiempo, listaV[indice].costo); listaV.Add(vuelo); for (int j = 0; j < grafito.Count; j++) { if (ind[j] == 100) { ind[j] = listaV.Count - 1; listaRecorrido.Add(vuelo); h++; break; } } break; } } nodoActual = listaDij[nodoActual + grafito.Count * 2]; } } this.Refresh(); Grafo graphDijs = new Grafo(); for (int i = 0; i < listaRecorrido.Count; i++) { for (int j = 0; j < grafito.Count; j++) { if (listaRecorrido[i].o == grafito[j].origen) { graphDijs.Add(grafito[j]); } if (listaRecorrido[i].d == grafito[j].origen) { graphDijs.Add(grafito[j]); } } } int x1 = 0, x2 = 0, y1 = 0, y2 = 0; for (int i = 0; i < listaRecorrido.Count; i++) { for (int j = 0; j < graphDijs.Count; j++) { if (listaRecorrido[i].o == graphDijs[j].origen) { x1 = graphDijs[j].x; y1 = graphDijs[j].y; } for (int y = 0; y < graphDijs[j].listaAristas.Count; y++) { if (listaRecorrido[i].d == graphDijs[j].listaAristas[y].destino) { x2 = graphDijs[j].listaAristas[y].x; y2 = graphDijs[j].listaAristas[y].y; } } } dikstra.CreateGraphics().DrawLine(arista, x1, y1, x2, y2); dikstra.CreateGraphics().DrawString(listaRecorrido[i].costo.ToString(), DefaultFont, colorLetras, (x1 + x2) / 2, (y1 + y2) / 2); } }
static void Main() { ListaVuelos listaVuelos = new ListaVuelos(); ListaCiudades listaCity = new ListaCiudades(); string[] arreglo = new string[3]; /*Vuelocs v1; * Vuelocs v2; * Vuelocs v3; * Vuelocs v4; * Vuelocs v5; * Vuelocs v6; * Vuelocs v7; * Vuelocs v8; * Vuelocs v9; * Vuelocs v10; * Vuelocs v11; * Vuelocs v12; * Vuelocs v13; * Vuelocs v14; * Vuelocs v15; * Vuelocs v16; * Vuelocs v17; * Vuelocs v18; * Vuelocs v19; * Vuelocs v20; * Vuelocs v21; * Vuelocs v22; * Vuelocs v23; * Vuelocs v24; * Vuelocs v25; * Vuelocs v26; * Vuelocs v27; * Vuelocs v28; * Vuelocs v29; * Vuelocs v30; * Vuelocs v31; * Vuelocs v32; * Vuelocs v33; * Vuelocs v34; * * * * v1 = new Vuelocs("SK1AB", 18, Convert.ToDateTime("12/12/2016 15:24:16 ")); * v2 = new Vuelocs("SK1AF", 18, Convert.ToDateTime("09/11/2016 12:30:20 ")); * v3 = new Vuelocs("SK1AG", 18, Convert.ToDateTime("1/10/2015 04:34:22 ")); * v4 = new Vuelocs("SK1BA", 18, Convert.ToDateTime("21/01/2008 08:28:28 ")); * v5 = new Vuelocs("SK1BC", 18, Convert.ToDateTime("28/04/2004 13:24:17 ")); * v6 = new Vuelocs("SK1BD", 18, Convert.ToDateTime("12/12/2005 18:48:18 ")); * v7 = new Vuelocs("SK1BD", 18, Convert.ToDateTime("11/09/2013 16:49:19 ")); * v8 = new Vuelocs("SKICD", 18, Convert.ToDateTime("21/12/2006 17:22:20 ")); * v9 = new Vuelocs("SK1CE", 18, Convert.ToDateTime("12/12/2007 19:36:21 ")); * v10 = new Vuelocs("SK1EC", 18, Convert.ToDateTime("31/12/1996 12:14:22 ")); * v11 = new Vuelocs("SK1EG", 18, Convert.ToDateTime("02/02/2015 23:48:23 ")); * v12 = new Vuelocs("SK1EL", 18, Convert.ToDateTime("17/12/1996 12:59:24 ")); * v13 = new Vuelocs("SK1ED", 18, Convert.ToDateTime("05/11/1991 11:00:25 ")); * v14 = new Vuelocs("SK1DE", 18, Convert.ToDateTime("01/05/1992 11:21:26 ")); * v15 = new Vuelocs("SK1DB", 18, Convert.ToDateTime("15/06/2003 13:27:27 ")); * v16 = new Vuelocs("SK1FB", 18, Convert.ToDateTime("02/12/2015 10:29:28 ")); * v17 = new Vuelocs("SK1FL", 18, Convert.ToDateTime("09/12/2008 09:41:29 ")); * v18 = new Vuelocs("SK1GA", 18, Convert.ToDateTime("11/04/1999 03:34:30 ")); * v19 = new Vuelocs("SK1GE", 18, Convert.ToDateTime("23/10/2000 04:24:31 ")); * v20 = new Vuelocs("SK1GL", 18, Convert.ToDateTime("22/02/2002 11:27:32 ")); * v21 = new Vuelocs("SK1GJ", 18, Convert.ToDateTime("13/07/2014 13:35:33 ")); * v22 = new Vuelocs("SK1GH", 18, Convert.ToDateTime("23/08/2012 14:24:34 ")); * v23 = new Vuelocs("SK1HG", 18, Convert.ToDateTime("13/05/2013 12:23:35 ")); * v24 = new Vuelocs("SK1HI", 18, Convert.ToDateTime("19/09/1995 12:12:36 ")); * v25 = new Vuelocs("SK1IH", 18, Convert.ToDateTime("05/03/1993 20:10:37 ")); * v26 = new Vuelocs("SK1IK", 18, Convert.ToDateTime("15/03/1998 22:16:38 ")); * v27 = new Vuelocs("SK1KI", 18, Convert.ToDateTime("21/11/1999 20:45:39 ")); * v28 = new Vuelocs("SK1KJ", 18, Convert.ToDateTime("11/09/2013 10:35:54 ")); * v29 = new Vuelocs("SK1JL", 18, Convert.ToDateTime("02/08/1993 15:30:18 ")); * v30 = new Vuelocs("SK1JM", 18, Convert.ToDateTime("21/09/2008 23:27:05 ")); * v31 = new Vuelocs("SK1LM", 18, Convert.ToDateTime("11/04/1997 21:09:15 ")); * v32 = new Vuelocs("SK1LK", 18, Convert.ToDateTime("16/11/2014 17:04:19 ")); * v33 = new Vuelocs("SK1LE", 18, Convert.ToDateTime("07/02/1991 18:02:10 ")); * v34 = new Vuelocs("SK1ML", 18, Convert.ToDateTime("23/02/1992 16:22:05 ")); * * listaVuelos.Add(v1); * listaVuelos.Add(v2); * listaVuelos.Add(v3); * listaVuelos.Add(v4); * listaVuelos.Add(v5); * listaVuelos.Add(v6); * listaVuelos.Add(v7); * listaVuelos.Add(v8); * listaVuelos.Add(v9); * listaVuelos.Add(v10); * listaVuelos.Add(v11); * listaVuelos.Add(v12); * listaVuelos.Add(v13); * listaVuelos.Add(v14); * listaVuelos.Add(v15); * listaVuelos.Add(v16); * listaVuelos.Add(v17); * listaVuelos.Add(v18); * listaVuelos.Add(v19); * listaVuelos.Add(v20); * listaVuelos.Add(v21); * listaVuelos.Add(v22); * listaVuelos.Add(v23); * listaVuelos.Add(v24); * listaVuelos.Add(v25); * listaVuelos.Add(v26); * listaVuelos.Add(v27); * listaVuelos.Add(v28); * listaVuelos.Add(v29); * listaVuelos.Add(v30); * listaVuelos.Add(v31); * listaVuelos.Add(v32); * listaVuelos.Add(v33); * listaVuelos.Add(v34);*/ if (File.Exists("Vuelos.txt")) { StreamReader reader = new StreamReader("Vuelos.txt"); string ruta; string origen; string destino; int asiento; DateTime fecha; int costo; int tiempo; string leer = reader.ReadLine(); bool[] asientosD = new bool[18]; string [] formato; int o; while (leer != null) { for (int i = 0; i < 18; i++) { asientosD[i] = true; } formato = leer.Split('|'); ruta = formato[0]; origen = formato[1]; destino = formato[2]; asiento = Int32.Parse(formato[3]); costo = Int32.Parse(formato[4]); tiempo = Int32.Parse(formato[5]); fecha = Convert.ToDateTime(formato[6]); o = 7; while (formato[o] != ".") { int jg = Int32.Parse(formato[o]); asientosD[jg] = false; o++; } Vuelocs vuelos = new Vuelocs(ruta, origen, destino, asiento, costo, tiempo, fecha, asientosD); listaVuelos.Add(vuelos); leer = reader.ReadLine(); } reader.Close(); } if (File.Exists("Pasajero.txt")) { StreamReader lectura = new StreamReader("Pasajero.txt"); string nombre, apellido, vuelo; string asiento, edad; string [] formatoo; string leer = lectura.ReadLine(); while (leer != null) { formatoo = leer.Split('|'); nombre = formatoo[0]; apellido = formatoo[1]; asiento = formatoo[2]; edad = formatoo[3]; vuelo = formatoo[4]; Pasajero pass = new Pasajero(nombre, apellido, edad, asiento, vuelo); for (int i = 0; i < listaVuelos.Count; i++) { if (vuelo == listaVuelos[i].ruta) { listaVuelos[i].setPasajero(pass); listaVuelos[i].asientos[Int32.Parse(asiento) - 1] = false; break; } } leer = lectura.ReadLine(); } lectura.Close(); } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); VentanaPrincipal ventanaPrincipal = new VentanaPrincipal(ref listaVuelos, listaCity, ref arreglo); ventanaPrincipal.ShowDialog(); //Application.Run(new Form1()); }
private void primm_Click(object sender, EventArgs e) { this.Refresh(); ListaVuelos listaCand = new ListaVuelos(); ListaVuelos listaFinal = new ListaVuelos(); string B; string ARM; B = ""; ARM = ""; for (int i = 0; i < listaVuelos.Count; i++) { listaCand.Add(listaVuelos[i]); } for (int i = 0; i < grafito.Count; i++) { ARM = ARM + grafito[i].origen; } int contadorCand = listaCand.Count; QuickSortTiempo(ref listaCand, 0, listaCand.Count - 1); Pen arista = new Pen(Color.BlueViolet, 4); arista.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor; SolidBrush colorLetras = new SolidBrush(Color.Red); while (B.Length != grafito.Count) { rehacer(ref listaCand, listaFinal); seleccion(ref listaCand, ref listaFinal, B); if (B == "") { listaFinal.Add(listaCand[0]); B = listaCand[0].o + listaCand[0].d; listaCand.RemoveAt(0); } else { listaFinal.Add(listaCand[0]); if (B.Contains(listaCand[0].o)) { B = B + listaCand[0].d; } else { B = B + listaCand[0].o; } listaCand.RemoveAt(0); } } int x1 = 0, x2 = 0, y1 = 0, y2 = 0; for (int i = 0; i < listaFinal.Count; i++) { for (int j = 0; j < grafito.Count; j++) { if (listaFinal[i].o == grafito[j].origen) { x1 = grafito[j].x; y1 = grafito[j].y; } for (int h = 0; h < grafito[j].listaAristas.Count; h++) { if (listaFinal[i].d == grafito[j].listaAristas[h].destino) { x2 = grafito[j].listaAristas[h].x; y2 = grafito[j].listaAristas[h].y; } } } panel1.CreateGraphics().DrawLine(arista, x1, y1, x2, y2); panel1.CreateGraphics().DrawString(listaFinal[i].tiempo.ToString(), DefaultFont, colorLetras, (x1 + x2) / 2, (y1 + y2) / 2); } this.panel1.Refresh(); for (int i = 0; i < listaFinal.Count; i++) { for (int j = 0; j < grafito.Count; j++) { if (listaFinal[i].o == grafito[j].origen) { x1 = grafito[j].x; y1 = grafito[j].y; } for (int h = 0; h < grafito[j].listaAristas.Count; h++) { if (listaFinal[i].d == grafito[j].listaAristas[h].destino) { x2 = grafito[j].listaAristas[h].x; y2 = grafito[j].listaAristas[h].y; } } } panel1.CreateGraphics().DrawLine(arista, x1, y1, x2, y2); panel1.CreateGraphics().DrawString(listaFinal[i].tiempo.ToString(), DefaultFont, colorLetras, (x1 + x2) / 2, (y1 + y2) / 2); } int pesoTotalPrim = 0; for (int i = 0; i < listaFinal.Count; i++) { pesoTotalPrim += listaFinal[i].tiempo; } primmbox.Text = pesoTotalPrim.ToString() + " hrs"; kruskallbox.Clear(); ListaArsitas.Items.Clear(); string[] s = new string[2]; for (int i = 0; i < listaFinal.Count; i++) { s[0] = listaFinal[i].o; s[1] = listaFinal[i].d; ListViewItem listviewKP = new ListViewItem(s); ListaArsitas.Items.Add(listviewKP); } }
private void button2_Click(object sender, EventArgs e) { ListaVuelos listaVuelosCandidatos = new ListaVuelos(); ListaVuelos listaVuelosFinal = new ListaVuelos(); List <string> listaNodos = new List <string>(); Pen penKruskal = new Pen(Color.GreenYellow, 4); penKruskal.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor; SolidBrush nodo = new SolidBrush(Color.Purple); for (int i = 0; i < listaVuelos.Count; i++) { listaVuelosCandidatos.Add(listaVuelos[i]); } for (int i = 0; i < grafito.Count; i++) { listaNodos.Add(grafito[i].origen); } QuickSortPrecio(ref listaVuelosCandidatos, 0, listaVuelosCandidatos.Count - 1); for (int i = 0; i < listaVuelosCandidatos.Count; i++) { for (int j = 0; j < listaNodos.Count; j++) { if (listaNodos[j].Contains(listaVuelosCandidatos[i].o) && !listaNodos[j].Contains(listaVuelosCandidatos[i].d)) { for (int h = 0; h < listaNodos.Count; h++) { if (listaNodos[h].Contains(listaVuelosCandidatos[i].d) && !listaNodos[h].Contains(listaVuelosCandidatos[i].o) && listaNodos[h].Length == 1) { listaVuelosFinal.Add(listaVuelosCandidatos[i]); listaNodos[j] = listaNodos[j] + listaVuelosCandidatos[i].d; listaNodos.Remove(listaNodos[h]); break; } else if (listaNodos[h].Contains(listaVuelosCandidatos[i].d) && !listaNodos[h].Contains(listaVuelosCandidatos[i].o) && listaNodos[h].Length > 1) { listaVuelosFinal.Add(listaVuelosCandidatos[i]); listaNodos[j] = listaNodos[j] + listaNodos[h]; listaNodos.Remove(listaNodos[h]); break; } } } } } this.panel1.Refresh(); for (int i = 0; i < listaVuelosFinal.Count; i++) { for (int j = 0; j < grafito.Count; j++) { if (listaVuelosFinal[i].o == grafito[j].origen) { x1 = grafito[j].x; y1 = grafito[j].y; } for (int h = 0; h < grafito[j].listaAristas.Count; h++) { if (listaVuelosFinal[i].d == grafito[j].listaAristas[h].destino) { x2 = grafito[j].listaAristas[h].x; y2 = grafito[j].listaAristas[h].y; } } } panel1.CreateGraphics().DrawLine(penKruskal, x1, y1, x2, y2); panel1.CreateGraphics().DrawString(listaVuelosFinal[i].costo.ToString(), DefaultFont, nodo, (x1 + x2) / 2, (y1 + y2) / 2); } int Kruskal = 0; for (int i = 0; i < listaVuelosFinal.Count; i++) { Kruskal += listaVuelosFinal[i].costo; } kruskallbox.Text = " $ " + Kruskal.ToString(); ListaArsitas.Items.Clear(); string[] s = new string[2]; for (int i = 0; i < listaVuelosFinal.Count; i++) { s[0] = listaVuelosFinal[i].o; s[1] = listaVuelosFinal[i].d; ListViewItem listviewKP = new ListViewItem(s); ListaArsitas.Items.Add(listviewKP); } primmbox.Clear(); }