예제 #1
0
        static void Main(string[] args)
        {
            int    from = 1, to = 1;
            Siec   siec = new Siec();
            string filename;

            do
            {
                Console.WriteLine("Podaj nazwe pliku z katalogu data:");
                filename = Console.ReadLine();
                Console.Clear();
                Console.WriteLine("Plik nie istnieje");
            } while (!(siec.Wczytaj(filename)));
            siec.Mst();
            Console.Clear();
            do
            {
                Console.WriteLine("Podaj początek i koniec poszukiwanej ścieżki (max {0}), aby wyjść podaj 0", siec.Get_wezels());
                try
                {
                    Console.WriteLine("Podaj początek:");
                    from = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Podaj koniec:");
                    to = Convert.ToInt32(Console.ReadLine());
                }
                catch (FormatException e)
                {
                    Console.Clear();
                    Console.WriteLine("Niepoprawny format danych");
                    continue;
                }
                Console.Clear();
                if (from > 0 && from <= siec.Get_wezels() && to > 0 && to <= siec.Get_wezels())
                {
                    siec.Dijkstra(from, to);
                }
                else
                {
                    Console.WriteLine("Wyjście poza zakres");
                }
            } while (from != 0 && to != 0);
            Console.Clear();
            Console.WriteLine("fin.");
            Console.ReadLine();
        }
예제 #2
0
 /// <summary>
 /// Konstruktor kopiujący
 /// </summary>
 /// <param name="siec"></param>
 public Siec(Siec siec)
 {
     this.liczbaWezlow             = siec.liczbaWezlow;
     this.liczbaLaczy              = siec.liczbaLaczy;
     this.liczbaKabli              = siec.liczbaKabli;
     this.algorytm                 = siec.algorytm;
     this.centrala                 = siec.centrala;
     wezly                         = new List <Wezel>(siec.wezly);
     krawedzie                     = new List <Lacze>(siec.krawedzie);
     sciezki                       = new List <Sciezka>(siec.sciezki);
     tablicaMST                    = new List <int>(siec.tablicaMST);
     this.tablicaKierowaniaWezlami = siec.tablicaKierowaniaWezlami;
     this.tablicaKierowaniaLaczami = siec.tablicaKierowaniaLaczami;
     this.tablicaKosztow           = siec.tablicaKosztow;
     this.suma                     = siec.suma;
     this.usunieteKrawedzie        = new List <Lacze>(siec.usunieteKrawedzie);
     this.brakPowodzenia           = siec.brakPowodzenia;
     ustawPoczatkoweKoszty         = siec.ustawPoczatkoweKoszty;
 }
예제 #3
0
        /// <summary>
        /// Wyznacza sciezke z Skad do Dokad o pasmie band i czestotliwosci frequency. Wpisuje band i frequency!
        /// </summary>
        /// <param name="Skad"></param>
        /// <param name="Dokad"></param>
        /// <param name="band"></param>
        /// <param name="frequency"></param>
        /// <param name="network">Sieć, zawierająca tablice kierowania węzłami, łączami, kosztów.</param>
        /// <returns></returns>
        public List <Lacze> wyznaczSciezke(Wezel Skad, Wezel Dokad, short band, short frequency, Siec network)
        {
            var path = wyznaczSciezke(Skad, Dokad, network.zwrocTabliceKierowaniaLaczami,
                                      network.zwrocTabliceKierowaniaWezlami,
                                      ref network.wezly, band, network.Koszty, frequency);

            //Wpisanie wartosci czetotliwosci i pasma do sciezki
            if (path != null && path.Count != 0)
            {
                this.band      = band;
                this.frequency = frequency;
            }

            return(path);
        }