public GrafoForm(Grafo g, ListaVuelos lv)
        {
            this.g  = g;
            this.lv = lv;

            InitializeComponent();
        }
예제 #2
0
        Vuelo seleciona(ListaVuelos lv)
        {
            Vuelo v = lv[0];

            lv.Remove(v);
            return(v);
        }
        private void listBoxRuta_DoubleClick(object sender, EventArgs e)
        {
            ListaVuelos      vd = new ListaVuelos();
            ElementoDijkstra ed2;

            if (listBoxRuta.SelectedItem != null)
            {
                foreach (ElementoDijkstra ed in d.getVD())
                {
                    if (ed == d.getVD()[listBoxRuta.SelectedIndex])
                    {
                        ed2 = ed;

                        while (ed2.GetProv() != null)
                        {
                            foreach (Vuelo v in lv)
                            {
                                if (v.getOrigen() == ed2.GetProv().getCiudad() && v.getDestino() == ed2.GetDes().getCiudad())
                                {
                                    vd.Add(v);
                                    break;
                                }
                            }

                            foreach (ElementoDijkstra aux in d.getVD())
                            {
                                if (aux.GetDes().getCiudad() == ed2.GetProv().getCiudad())
                                {
                                    ed2 = aux;
                                    break;
                                }
                            }
                        }

                        break;
                    }
                }

                String nombre   = "@";
                String apellido = "";
                int    edad     = 0;
                foreach (Vuelo v in vd)
                {
                    if (nombre == "@")
                    {
                        VentanaCompraForm compra = new VentanaCompraForm(v);
                        compra.ShowDialog();
                        nombre   = compra.getNom();
                        apellido = compra.getApe();
                        edad     = compra.getEdad();
                    }
                    else
                    {
                        VentanaCompraForm compra = new VentanaCompraForm(v, nombre, apellido, edad);
                        compra.ShowDialog();
                    }
                }
            }
        }
        public ventanaVuelosForm(ListaVuelos lv, Grafo g)
        {
            this.g  = g;
            this.lv = lv;
            InitializeComponent();

            actializarListBoxt(this.lv);
        }
 private void actializarListBoxt(ListaVuelos lv)
 {
     lisBoxVuelos.Items.Clear();
     for (int i = 0; i < lv.Count; i++)
     {
         lisBoxVuelos.Items.Add(lv[i]);
     }
     lisBoxVuelos.Refresh();
     buttonRegistrar.Enabled = false;
     buttonEliminar.Enabled  = false;
 }
예제 #6
0
        void InicializaCandidatos(ListaVuelos lv, char opc, Nodo ini)
        {
            foreach (Vuelo v in lv)
            {
                //candidatos.Add(v);
                vuelos.Add(v);
            }

            Ciudades.Add(ini);
            //arm.Add(Selecciona(vuelos,opc,Ciudades));
        }
예제 #7
0
 private void cargaPasajeros(ListaVuelos lv)
 {
     lpO.Clear();
     foreach (Vuelo v in lv)
     {
         foreach (Pasajero p in v.getLp())
         {
             lpO.Add(p);
             actializarListBoxt(lpO);
         }
     }
     lpF = lpO;
 }
예제 #8
0
        public Prim(Grafo g, ListaVuelos lv, char opc, Nodo ini)
        {
            InicializaCandidatos(lv, opc, ini);

            //while (Ciudades.Count < g.getListaNodos().Count-1)
            do
            {
                arm.Add(Selecciona(opc, Ciudades));
                if (arm[arm.Count - 1] == null)
                {
                    arm.Remove(arm[arm.Count - 1]);

                    Ciudades.Add(new Nodo(vuelos[0].getOrigen()));
                }
            } while (vuelos.Count > 0);
            gp = new Grafo(arm);
        }
예제 #9
0
        public Kruscal(Grafo g, ListaVuelos lv, char opc)
        {
            //Console.Write("\nKruscal ");
            int    u1, u2;
            String v1 = "", v2 = "";
            Vuelo  aux;

            foreach (Vuelo v in lv)
            {
                c.Add(v);
            }

            if (opc == 'c')
            {
                c.quickSort(0, c.Count - 1, 3);
                //Console.Write("costo ->");
            }
            else
            {
                c.quickSort(0, c.Count - 1, 4);
                //Console.Write("tiempo ->");
            }
            inicializaCC(g);


            while (c.Count > 0)
            {
                aux = seleciona(c);
                v1  = v1 + aux.getOrigen();
                v2  = v2 + aux.getDestino();

                u1 = busca(aux.getOrigen());
                u2 = busca(aux.getDestino());

                if (u1 != u2)
                {
                    combina(u1, u2);
                    arm.Add(aux);
                    ct = ct + aux.getCosto();
                    tt = tt + aux.getTiempo();

                    //Console.Write(aux.getOrigen().ToString()+aux.getDestino().ToString()+"-> ");
                }
            }
            gk = new Grafo(arm);
        }
예제 #10
0
        public void eliminarArista(Vuelo v, ListaVuelos lv)
        {
            bool eliminar = true, ex = false, stop = true;

            do
            {
                ex = false;
                foreach (Nodo n in listaNodos)
                {
                    foreach (Ady a in n.getListaAdy())
                    {
                        if (n.getCiudad() == v.getOrigen() && a.getNodo().getCiudad() == v.getDestino())
                        {
                            ex = true;
                            n.getListaAdy().Remove(a);
                            break;
                        }
                    }
                }
            }while(ex);

            do
            {
                stop = true;

                foreach (Nodo n in listaNodos)
                {
                    eliminar = true;
                    foreach (Vuelo vAux in lv)
                    {
                        if (n.getCiudad() == vAux.getOrigen() || n.getCiudad() == vAux.getDestino())
                        {
                            eliminar = false;
                        }
                    }

                    if (eliminar == true)
                    {
                        stop = false;
                        listaNodos.Remove(n);
                        break;
                    }
                }
            } while (!stop);
        }
예제 #11
0
        public Grafo(ListaVuelos lv)
        {
            listaNodos = new List <Nodo>();

            bool existeN = false;

            foreach (Vuelo v in lv)
            {
                existeN = false;

                foreach (Nodo nAux in listaNodos)
                {
                    if (nAux.getCiudad() == v.getOrigen())
                    {
                        existeN = true;
                        break;
                    }
                }
                if (!existeN)
                {
                    Nodo n = new Nodo(v.getOrigen());
                    listaNodos.Add(n);
                }
            }



            existeN = false;
            foreach (Vuelo v in lv)
            {
                existeN = false;
                foreach (Nodo nAux in listaNodos)
                {
                    if (nAux.getCiudad() == v.getDestino())
                    {
                        existeN = true;
                        break;
                    }
                }
                if (!existeN)
                {
                    Nodo n = new Nodo(v.getDestino());
                    listaNodos.Add(n);
                }
            }



            //crea lista ady de cada nodo
            foreach (Nodo n in listaNodos)
            {
                //Console.WriteLine(n.getCiudad());
                foreach (Vuelo v in lv)
                {
                    if (v.getOrigen() == n.getCiudad())
                    {
                        foreach (Nodo nRef in listaNodos)
                        {
                            if (nRef.getCiudad() == v.getDestino())
                            {
                                Ady nuevoadyacente = new Ady(nRef, v.getCosto(), v.getTiempo());
                                n.insertaAdy(nuevoadyacente);
                            }
                        } //ref lista nodos
                    }     //if
                }         //foreach vuelos
            }             //foreach nodos
        }
 public ventanaPrincipalForm(ListaVuelos lv, Grafo g)
 {
     this.g  = g;
     this.lv = lv;
     InitializeComponent();
 }
예제 #13
0
        static void Main()
        {
            ListaVuelos lv = new ListaVuelos();

            //ListaVuelos listaVuelos;
            if (File.Exists("Vuelos.bin"))
            {
                using (Stream stream = File.Open("Vuelos.bin", FileMode.Open))
                {
                    var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                    lv = (ListaVuelos)bformatter.Deserialize(stream);
                }
            }
            else
            {
                VuelosPrecargados();

                using (Stream sw = File.Open("Vuelos.bin", FileMode.Create))
                {
                    var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                    bformatter.Serialize(sw, lv);
                    sw.Close();
                }
            }

            Grafo g = new Grafo(lv);

            g.impirme();

            //Grafo;
            if (File.Exists("Grafo.bin"))
            {
                using (Stream stream = File.Open("Grafo.bin", FileMode.Open))
                {
                    var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                    g = (Grafo)bformatter.Deserialize(stream);
                }
            }
            else
            {
                using (Stream sw = File.Open("Grafo.bin", FileMode.Create))
                {
                    var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                    bformatter.Serialize(sw, g);
                    sw.Close();
                }
            }


            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new ventanaPrincipalForm());

            ventanaPrincipalForm inicio = new ventanaPrincipalForm(lv, g);

            inicio.ShowDialog();

            //AQUI GUARDAR DATOS

            File.Delete("Vuelos.bin");
            using (Stream sw = File.Create("Vuelos.bin"))
            {
                var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                bformatter.Serialize(sw, lv);
                sw.Close();
            }


            File.Delete("Grafo.bin");
            using (Stream sw = File.Create("Grafo.bin"))
            {
                var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                bformatter.Serialize(sw, g);
                sw.Close();
            }


            void VuelosPrecargados()
            {
                Vuelo v1  = new Vuelo("A", "B", 600, 50);
                Vuelo v2  = new Vuelo("A", "F", 1500, 90);
                Vuelo v3  = new Vuelo("A", "G", 1050, 80);
                Vuelo v4  = new Vuelo("B", "A", 600, 50);
                Vuelo v5  = new Vuelo("B", "C", 750, 40);
                Vuelo v6  = new Vuelo("B", "D", 650, 60);
                Vuelo v7  = new Vuelo("B", "E", 1850, 70);
                Vuelo v8  = new Vuelo("C", "B", 800, 45);
                Vuelo v9  = new Vuelo("C", "E", 850, 80);
                Vuelo v10 = new Vuelo("E", "C", 750, 45);
                Vuelo v11 = new Vuelo("E", "G", 1150, 80);
                Vuelo v12 = new Vuelo("E", "L", 1650, 60);
                Vuelo v13 = new Vuelo("E", "D", 700, 35);
                Vuelo v14 = new Vuelo("D", "E", 900, 45);
                Vuelo v15 = new Vuelo("D", "B", 700, 55);
                Vuelo v16 = new Vuelo("F", "B", 800, 65);
                Vuelo v17 = new Vuelo("F", "L", 2850, 140);
                Vuelo v18 = new Vuelo("G", "A", 1250, 95);
                Vuelo v19 = new Vuelo("G", "E", 1175, 75);
                Vuelo v20 = new Vuelo("G", "L", 2675, 135);
                Vuelo v21 = new Vuelo("G", "J", 1400, 60);
                Vuelo v22 = new Vuelo("G", "H", 450, 25);
                Vuelo v23 = new Vuelo("H", "G", 350, 30);
                Vuelo v24 = new Vuelo("H", "I", 400, 35);
                Vuelo v25 = new Vuelo("I", "H", 400, 30);
                Vuelo v26 = new Vuelo("I", "K", 400, 35);
                Vuelo v27 = new Vuelo("K", "I", 400, 35);
                Vuelo v28 = new Vuelo("K", "J", 300, 25);
                Vuelo v29 = new Vuelo("J", "L", 750, 40);
                Vuelo v30 = new Vuelo("J", "M", 1450, 70);
                Vuelo v31 = new Vuelo("L", "M", 650, 40);
                Vuelo v32 = new Vuelo("L", "K", 700, 70);
                Vuelo v33 = new Vuelo("L", "E", 1500, 60);
                Vuelo v34 = new Vuelo("M", "L", 700, 40);

                Pasajero p1 = new Pasajero("EMMANUEL", "GUTIERREZ", 20, 10, "SK1AB");

                v1.getLp().Add(p1);
                Pasajero p2 = new Pasajero("VALERIA", "RAMIREZ", 20, 12, "SK1ML");

                v34.getLp().Add(p2);
                Pasajero p3 = new Pasajero("FRANCISCO", "GARCIA", 34, 8, "SK1KI");

                v27.getLp().Add(p3);
                Pasajero p4 = new Pasajero("ALBERTO", "FONCECA", 18, 1, "SK1GJ");

                v21.getLp().Add(p4);

                lv.Add(v1);
                lv.Add(v2);
                lv.Add(v3);
                lv.Add(v4);
                lv.Add(v5);
                lv.Add(v6);
                lv.Add(v7);
                lv.Add(v8);
                lv.Add(v9);
                lv.Add(v10);
                lv.Add(v11);
                lv.Add(v12);
                lv.Add(v13);
                lv.Add(v14);
                lv.Add(v15);
                lv.Add(v16);
                lv.Add(v17);
                lv.Add(v18);
                lv.Add(v19);
                lv.Add(v20);
                lv.Add(v21);
                lv.Add(v22);
                lv.Add(v23);
                lv.Add(v24);
                lv.Add(v25);
                lv.Add(v26);
                lv.Add(v27);
                lv.Add(v28);
                lv.Add(v29);
                lv.Add(v30);
                lv.Add(v31);
                lv.Add(v32);
                lv.Add(v33);
                lv.Add(v34);
            }
        }
예제 #14
0
        public ListaVuelos busquedaMultiple(int opc, string dato)
        {
            ListaVuelos lvF = new ListaVuelos();

            dato = dato.ToUpper();
            switch (opc)
            {
            case 1:
                if (dato.Length <= 5)
                {
                    for (int i = 0; i < this.Count; i++)
                    {
                        int j;
                        for (j = 0; j < dato.Length; j++)
                        {
                            if (this[i].getRuta()[j] != dato[j])
                            {
                                break;
                            }
                        }
                        if (j == dato.Length)
                        {
                            lvF.Add(this[i]);
                        }
                    }
                }
                break;

            case 2:
                if (dato.Length <= 1)
                {
                    for (int i = 0; i < this.Count; i++)
                    {
                        int j;
                        for (j = 0; j < dato.Length; j++)
                        {
                            if (this[i].getRuta()[3] != dato[j])
                            {
                                break;
                            }
                        }
                        if (j == dato.Length)
                        {
                            lvF.Add(this[i]);
                        }
                    }
                }
                break;

            case 3:
                if (dato.Length <= 1)
                {
                    for (int i = 0; i < this.Count; i++)
                    {
                        int j;
                        for (j = 0; j < dato.Length; j++)
                        {
                            if (this[i].getRuta()[4] != dato[j])
                            {
                                break;
                            }
                        }
                        if (j == dato.Length)
                        {
                            lvF.Add(this[i]);
                        }
                    }
                }
                break;
            }

            return(lvF);
        }// busqueda
        private void listBoxRuta_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListaVuelos      vd = new ListaVuelos();
            ElementoDijkstra ed2;

            foreach (ElementoDijkstra ed in d.getVD())
            {
                if (ed == d.getVD()[listBoxRuta.SelectedIndex])
                {
                    ed2 = ed;

                    if (ed.getPeso() != 10000)
                    {
                        if (radioButtonC.Checked == true)
                        {
                            textBoxPond2.Text = "$ " + ed.getPeso().ToString();
                        }
                        else
                        {
                            textBoxPond2.Text = ed.getPeso().ToString() + " min.";
                        }
                    }
                    else
                    {
                        textBoxPond2.Text = "No disponible";
                    }

                    while (ed2.GetProv() != null)
                    {
                        foreach (Vuelo v in lv)
                        {
                            if (v.getOrigen() == ed2.GetProv().getCiudad() && v.getDestino() == ed2.GetDes().getCiudad())
                            {
                                vd.Add(v);
                                break;
                            }
                        }

                        foreach (ElementoDijkstra aux in d.getVD())
                        {
                            if (aux.GetDes().getCiudad() == ed2.GetProv().getCiudad())
                            {
                                ed2 = aux;
                                break;
                            }
                        }
                    }

                    break;
                }
            }



            Grafo gd = new Grafo(vd);

            foreach (Nodo n in g.getListaNodos())
            {
                foreach (Nodo n2 in gd.getListaNodos())
                {
                    if (n.getCiudad() == n2.getCiudad())
                    {
                        n2.setX(n.getX());
                        n2.setY(n.getY());
                    }
                }
            }
            panel1.Refresh();
            Pen p1 = new Pen(Color.Red, 2);

            imprimirCiudades(gd, p1);
        }
예제 #16
0
 public ventanaPasajerosForm(ListaVuelos lv)
 {
     this.lv = lv;
     InitializeComponent();
     cargaPasajeros(lv);
 }
예제 #17
0
        Vuelo Selecciona(char opc, List <Nodo> nodos)
        {
            ListaVuelos candidatos = new ListaVuelos();
            Vuelo       aux;
            bool        stop = true;

            candidatos.Clear();

            foreach (Nodo n in nodos)
            {
                foreach (Vuelo v in vuelos)
                {
                    if (v.getOrigen() == n.getCiudad() || v.getDestino() == n.getCiudad())
                    {
                        candidatos.Add(v);
                    }
                }
            }

            if (candidatos.Count > 0)
            {
                if (opc == 'c')
                {
                    candidatos.quickSort(0, candidatos.Count - 1, 3);
                }
                else
                {
                    candidatos.quickSort(0, candidatos.Count - 1, 4);
                }


                aux = candidatos[0];
                this.vuelos.Remove(candidatos[0]);

                if (!Ciudades.Contains(new Nodo(aux.getOrigen())))
                {
                    Ciudades.Add(new Nodo(aux.getOrigen()));
                }

                if (!Ciudades.Contains(new Nodo(aux.getDestino())))
                {
                    Ciudades.Add(new Nodo(aux.getDestino()));
                }

                do
                {
                    stop = true;
                    foreach (Nodo n2 in Ciudades)
                    {
                        foreach (Nodo n in Ciudades)
                        {
                            foreach (Vuelo v in this.vuelos)
                            {
                                if (v.getOrigen() == n2.getCiudad() && v.getDestino() == n.getCiudad())
                                {
                                    vuelos.Remove(v);
                                    stop = false;
                                    break;
                                }
                            }
                        }
                    }
                } while (!stop);

                //Console.Write(aux.getOrigen().ToString() + aux.getDestino().ToString() + "-> ");
                tt = tt + aux.getTiempo();
                ct = ct + aux.getCosto();
                return(aux);
            }
            return(null);
        }
예제 #18
0
 public VentanaNuevoVuelo(ListaVuelos lv, Grafo g)
 {
     this.g  = g;
     this.lv = lv;
     InitializeComponent();
 }