Beispiel #1
0
        public void DodajElement(Osoba.Osoba osoba)
        {
            if (korzen == null)
            {
                korzen      = new Wezel();
                korzen.Dane = osoba;
                return;
            }
            Wezel p = korzen, poprzedni;

            do
            {
                poprzedni = p;
                if (osoba.CompareTo(p.Dane) < 0)
                {
                    p = p.Lewy;
                }
                else
                {
                    p = p.Prawy;
                }
            }while(p != null);
            if (osoba.CompareTo(poprzedni.Dane) < 0)
            {
                poprzedni.Lewy      = new Wezel();
                poprzedni.Lewy.Dane = osoba;
            }
            else
            {
                poprzedni.Prawy      = new Wezel();
                poprzedni.Prawy.Dane = osoba;
            }
        }
Beispiel #2
0
        public Kwadrat(WezelKontroli _GL, WezelKontroli _GP, WezelKontroli _DP, WezelKontroli _DL)
        {
            GL = _GL;
            GP = _GP;
            DP = _DP;
            DL = _DL;

            SG = GL.prawo;
            SP = DP.gora;
            SD = DL.prawo;
            SL = DL.gora;

            if (GL.stan)
            {
                ksztalt += 8;
            }
            if (GP.stan)
            {
                ksztalt += 4;
            }
            if (DP.stan)
            {
                ksztalt += 2;
            }
            if (DL.stan)
            {
                ksztalt += 1;
            }
        }
Beispiel #3
0
        /// <summary>
        /// Zamienia stringa ze sciezka na obiekt klasy Sciezka.
        /// </summary>
        /// <param name="stringPath"></param>
        /// <returns></returns>
        public static Sciezka stringToPath(string stringPath)
        {
            if (stringPath == "")
            {
                return(new Sciezka());
            }

            var words = stringPath.Split('#');

            Wezel   w1 = new Wezel(-1, words[0]);
            Sciezka sc = new Sciezka();

            //Dodanie pierwszego wezla
            sc.Wezel1 = w1;
            sc.WezlySciezki.Add(w1);

            for (int i = 1; i < words.Length; i = i + 2)
            {
                //Wezel drugi z lacza
                Wezel W2 = new Wezel(-1, words[i + 1]);
                sc.WezlySciezki.Add(W2);

                //Dodanie nowej krawedzi
                sc.KrawedzieSciezki.Add(new Lacze(Int32.Parse(words[i]), sc.WezlySciezki[sc.WezlySciezki.Count - 2], W2,
                                                  1));
            }

            //Ostatni wezel
            sc.Wezel2 = sc.WezlySciezki[sc.WezlySciezki.Count - 1];

            return(sc);
        }
Beispiel #4
0
        public void Dodaj(int liczba)
        {
            Wezel tmp = new Wezel(liczba);

            tmp.nastepny = head;
            head         = tmp;
        }
Beispiel #5
0
    void rekurencja(Wezel w, out int index)
    {
        index           = iteracja; //*3
        bvharr[index].x = Bindex;
        iteracja++;

        int index1_v = 0;
        int index2_v = 0;

        if (w.n1 == null && w.n2 == null)
        {
            bvharr[index].x = w.id;
        }
        else
        {
            B.Add(w.boxmin);
            B.Add(w.boxmax);
            Bindex += 2;
            if (w.n1 != null)
            {
                rekurencja(w.n1, out index1_v);
            }
            if (w.n2 != null)
            {
                rekurencja(w.n2, out index2_v);
            }
        }
        bvharr[index].y = index1_v;
        bvharr[index].z = index2_v;
    }
Beispiel #6
0
        public void ReadingFromPathFile(string path)
        {
            string line;

            char[]   delimiterChars = { '#' };
            string[] words;
            int      id1, id2, pathID, index1, index2;

            try
            {
                using (StreamReader file = new StreamReader(path))
                {
                    while ((line = file.ReadLine()) != null)
                    {
                        words  = line.Split(delimiterChars);
                        id1    = Int32.Parse(words[1]);
                        id2    = Int32.Parse(words[2]);
                        pathID = Int32.Parse(words[0]);
                        index1 = nodes_names.Values.ToList().IndexOf(id1);
                        index2 = nodes_names.Values.ToList().IndexOf(id2);

                        Wezel w1 = this.topology.network.wezly.Find(x => x.idWezla == id1);
                        Wezel w2 = this.topology.network.wezly.Find(x => x.idWezla == id2);

                        Lacze lacze = new Lacze(pathID, w1, w2);
                        this.topology.network.krawedzie.Add(lacze);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Cannot read from file");
            }
        }
Beispiel #7
0
        /// <summary>
        /// Obsługuje zapytanie NetworkTopology
        /// </summary>
        /// <param name="words"></param>
        public void handleNetworkTopology(string[] words)
        {
            //Czytanie wiadomosci
            string rcIP          = words[0];
            string ipSource      = words[2];
            string ipDestination = words[3];
            short  band          = Int16.Parse(words[4]);
            short  frequency     = Int16.Parse(words[5]);

            Wezel w1 = this.topology.network.wezly.Find(x => x.ip == ipSource);
            Wezel w2 = this.topology.network.wezly.Find(x => x.ip == ipDestination);

            //uruchomienie algorytmu najkrotszej sciezki
            this.topology.runShortestPathAlgorithm();

            //wyznaczenie sciezki
            NetworkPath networkPath = this.topology.getNetworkPath(w1.SNPP, w2.SNPP, band, this.topology.network, frequency);

            //Dodanie do listy potencjalnych sciezek, o ile nie jest pusta
            if (networkPath.snpps.Count != 0)
            {
                this.topology.pathsCopy.Add(networkPath);
            }

            //wygenerowanie wiadomosci
            string message = this.generateNetworkTopologyRCesponse(networkPath.path);

            //wysylanie wiadomosci na porcie 11001
            SendMessage(rcIP, message, 11002);
        }
Beispiel #8
0
        public void testWyznaczSciezke()
        {
            Siec  network = new Siec();
            Wezel w1      = new Wezel(1, "127.0.0.1");
            Wezel w2      = new Wezel(2, "127.0.0.2");
            Wezel w3      = new Wezel(3, "127.0.0.3");

            network.wezly.Add(w1);
            network.wezly.Add(w2);
            network.wezly.Add(w3);
            network.krawedzie.Add(new Lacze(12, w1, w2));
            network.krawedzie.Add(new Lacze(23, w2, w3));
            short   band      = 5;
            short   frequency = 6;
            Sciezka path      = new Sciezka(w1, w3);

            network.algorytmFloyda();
            path.wyznaczSciezke(w1, w2, band, frequency, network);

            Assert.AreNotEqual(0, path.WezlySciezki.Count);
            Assert.AreNotEqual(0, path.KrawedzieSciezki.Count);
            Assert.AreEqual(w1.ip, path.WezlySciezki[0].ip);
            Assert.AreEqual(w2.ip, path.WezlySciezki[1].ip);
            Assert.AreEqual(w3.ip, path.WezlySciezki[2].ip);
        }
Beispiel #9
0
 /// <summary>
 /// Wyswietla dane
 /// </summary>
 public void WypiszWszystko()
 {
     for (Wezel tmp = glowa; tmp != null; tmp = tmp.Nastepny)
     {
         Console.WriteLine(tmp.Dane);
     }
 }
Beispiel #10
0
        public void testUpdateCost()
        {
            Wezel w1 = new Wezel(1, "127.0.0.1");
            Wezel w2 = new Wezel(2, "127.0.0.2");

            Lacze link = new Lacze(12, w1, w2);

            Assert.AreEqual(0, link.Waga);

            //Dodanie wpisow do tablic eonowych wezla 1 na wyjsciu (f = 0, B = 17)
            link.Wezel1.SNPP.snps[0].eonTable.addRow(new EONTableRowOut(0, 17));
            //I na wejsciu wezla 2
            link.Wezel2.SNPP.snps[0].eonTable.addRow(new EONTableRowIN(0, 17));

            //Aktualizacja wagi krawędzi
            link.updateCost(0, 17);

            Assert.AreEqual(17 * 17, link.Waga);

            //f = 19, B = 5, ale tylko na jednym węźle
            link.Wezel1.SNPP.snps[0].eonTable.addRow(new EONTableRowOut(19, 5));

            link.updateCost(19, 5);

            Assert.AreEqual(17 * 17, link.Waga);

            link.Wezel2.SNPP.snps[0].eonTable.addRow(new EONTableRowIN(19, 5));

            link.updateCost(19, 5);

            Assert.AreEqual(22 * 22, link.Waga);
        }
Beispiel #11
0
        public void Wstaw(T x)
        {
            liczbaElementow++;
            if (korzen == null)
            {
                korzen = new Wezel(x, null, null);
                return;
            }
            Wezel tmp = korzen, poprzedni;

            do
            {
                poprzedni = tmp;
                if (tmp.dane.CompareTo(x) < 0)
                {
                    tmp = tmp.prawy;
                }
                else
                {
                    tmp = tmp.lewy;
                }
            }while (tmp != null);
            if (poprzedni.dane.CompareTo(x) < 0)
            {
                poprzedni.prawy = new Wezel(x, null, null);
            }
            else
            {
                poprzedni.lewy = new Wezel(x, null, null);
            }
        }
Beispiel #12
0
    void init()
    {
        bvh = null;
        var czyZnalezionoDrzewo = treesSetCache.TryGetValue(meshCheckSum, out bvh);

        if (czyZnalezionoDrzewo)
        {
            root = rebuildRootTree(bvh);
            updateBoxes();
        }
        else
        {
            root = getLogicTree();
            rootToTables();

            var byteArray   = new byte[bvh.Count * sizeof(int) * 3];
            var intBvhArray = new int[bvh.Count * 3];
            int i           = 0;
            foreach (var ele in bvh)
            {
                intBvhArray[i] = ele.x;
                i++;
                intBvhArray[i] = ele.y;
                i++;
                intBvhArray[i] = ele.z;
                i++;
            }

            Buffer.BlockCopy(intBvhArray, 0, byteArray, 0, byteArray.Length);
            File.WriteAllBytes(folderName + "\\" + meshCheckSum, byteArray);
        }
    }
Beispiel #13
0
        public void ReadingFromNodesFile(string path)
        {
            string line;

            char[]   delimiterChars = { '#' };
            string[] words;

            try
            {
                using (StreamReader file = new StreamReader(path))
                {
                    while ((line = file.ReadLine()) != null)
                    {
                        words = line.Split(delimiterChars);
                        int   id = Int32.Parse(words[1]);
                        Wezel w  = new Wezel(id, words[0]);
                        this.topology.network.wezly.Add(w);
                        nodes_names.Add(words[0], id);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Cannot read from file");
            }
        }
Beispiel #14
0
 public void Wyswietl()
 {
     for (Wezel w = head; w != null; w = w.nastepny)
     {
         Console.Write(w.dane + " ");
     }
     Console.WriteLine();
 }
Beispiel #15
0
        /// <summary>
        /// Dodaje element do listy
        /// </summary>
        /// <param name="s"></param>
        public void DodajDoGlowy(Towar s)
        {
            Wezel tmp = new Wezel();

            tmp.Dane     = s;
            tmp.Nastepny = glowa;
            glowa        = tmp;
        }
Beispiel #16
0
        public void testNodeConstructor()
        {
            Wezel w1 = new Wezel(1, "127.0.0.1");
            Wezel w2 = new Wezel(2, "127.0.0.2");

            Assert.AreEqual("127.0.0.1", w1.SNPP.snps[0].ipaddress.ToString());
            Assert.AreEqual("127.0.0.2", w2.SNPP.snps[0].ipaddress.ToString());
        }
Beispiel #17
0
    Wezel rebuildRootTree(List <Vector3Int> list)
    {
        Vector3Int[] bvhTable = list.ToArray();
        Wezel        w        = new Wezel();

        rebuildRecurention(bvhTable, w, 0);
        return(w);
    }
Beispiel #18
0
        public T Pop()
        {
            if (IsEmpty)
            {
                throw new StosEmptyException();
            }
            szczyt = szczyt.next;

            return(default);
Beispiel #19
0
        public T pop_front()
        {
            //przy pustej liście powinno wyrzucić wyjątek
            T temp = first.Value;

            first = first.next;
            count--;
            return(temp);
        }
Beispiel #20
0
 public void KlonujRekurencyjnie(Wezel wezel)
 {
     wezel.Dane = Dane;
     if (Nastepny != null)
     {
         wezel.Nastepny = new Wezel();
         Nastepny.KlonujRekurencyjnie(wezel.Nastepny);
     }
 }
Beispiel #21
0
 private static void zamienNaTablice(Wezel w, T[] tab, ref int n)
 {
     if (w != null)
     {
         zamienNaTablice(w.lewy, tab, ref n);
         tab[n] = w.dane;
         n++;
         zamienNaTablice(w.prawy, tab, ref n);
     }
 }
Beispiel #22
0
        /// <summary>
        /// Usuwa element z listy
        /// </summary>
        /// <returns>Zwraca usuniety element</returns>
        public Towar UsunZGlowy()
        {
            if (glowa == null)           //lista pusta
            {
                throw new InvalidOperationException("Lista jest pusta. ");
            }
            Towar x = glowa.Dane;

            glowa = glowa.Nastepny;
            return(x);
        }
Beispiel #23
0
        /// <summary>
        /// Obliczanie sumy cen brutto wsyztskich towarów na liście
        /// </summary>
        /// <returns>Zwraca calkowitą cenę brutto towarów z faktury</returns>
        public double CenaCalkBrutto()
        {
            double cena = 0;
            Wezel  tmp  = glowa;

            while (tmp != null)
            {
                cena += tmp.Dane.CenaCalkBrutto;
                tmp   = tmp.Nastepny;
            }
            return(cena);
        }
Beispiel #24
0
    void UtwTrojkat(Wezel a, Wezel b, Wezel c)
    {
        trojkaty.Add(a.wierzcholek);
        trojkaty.Add(b.wierzcholek);
        trojkaty.Add(c.wierzcholek);

        Trojkat trojkat = new Trojkat(a.wierzcholek, b.wierzcholek, c.wierzcholek);

        DodajDoSlownika(trojkat.wierzcholekA, trojkat);
        DodajDoSlownika(trojkat.wierzcholekB, trojkat);
        DodajDoSlownika(trojkat.wierzcholekC, trojkat);
    }
Beispiel #25
0
        public bool resolveSNPPS(ref NetworkPath networkPath, short band, short frequency)
        {
            //topology.getNetworkPath();
            foreach (var snpp in networkPath.snpps)
            {
                //if (canIGoOnAtThisFrequency)
                //{
                SNandRC sNandRc = SN_RCs.Find(x => x.snpp.snps[0].ipaddress.ToString() == snpp.snps[0].ipaddress.ToString());

                if (sNandRc != null)
                {
                    //IP węzła modelującego podsieć
                    string oldNodeIP = sNandRc.snpp.snps[0].ipaddress.ToString();

                    //Łącze dochodzące do węzła modelującego podsieć
                    int previousLink = networkPath.path.KrawedzieSciezki.FindIndex(x =>
                                                                                   x.Wezel2.ip == oldNodeIP);

                    //Łącze wychodzące z węzła modelującego podsieć
                    int nextLink = networkPath.path.KrawedzieSciezki.FindIndex(x =>
                                                                               x.Wezel1.ip == oldNodeIP);

                    Wezel w1 = networkPath.path.zwroc_ListaKrawedziSciezki[previousLink].Wezel1;
                    Wezel w2 = networkPath.path.zwroc_ListaKrawedziSciezki[nextLink].Wezel2;

                    SubNetworkPointPool SNPPFrom = new SubNetworkPointPool(new SubNetworkPoint(IPAddress.Parse(w1.ip)));
                    SubNetworkPointPool SNPPTo   = new SubNetworkPointPool(new SubNetworkPoint(IPAddress.Parse(w2.ip)));

                    // writeLog("Resolving path from " + SNPPFrom.snps[0].ipaddress + " to " + SNPPTo.snps[0].ipaddress);

                    //Czesciowa sciezka, którą trzeba dodać do nadścieżki
                    var partOfThePath = this.getPathFromRC(sNandRc.RC_IP.ToString(), SNPPFrom, SNPPTo, band,
                                                           frequency);

                    //Sciezka jest pusta
                    if (partOfThePath == null || partOfThePath.snpps.Count == 0)
                    {
                        //canIGoOnAtThisFrequency = false;
                        return(false);
                    }
                    //Ścieżka jest niepusta
                    else
                    {
                        //insertSubPath(ref networkPath, partOfThePath, previousLink, nextLink);
                        return(true);
                    }
                }
            }
            //}

            return(true);
        }
Beispiel #26
0
    public Wezel getChildById(Wezel parrent, int childId)
    {
        foreach (Wezel child in parrent.children)
        {
            if (child.ID == childId)
            {
                return(child);
            }
        }

        Console.WriteLine(parrent.name + " hasn't got child with ID: " + childId);
        return(null);
    }
Beispiel #27
0
 public void ZdublujWartości(int wartosc)
 {
     for (Wezel w = head; w != null; w = w.nastepny)
     {
         if (w.dane == wartosc)
         {
             Wezel tmp = new Wezel(wartosc);
             tmp.nastepny = w.nastepny;
             w.nastepny   = tmp;
             w            = w.nastepny;
         }
     }
 }
Beispiel #28
0
 //ogolnie to nie wiem czy dobrze to jest. Robi³em na oko i sprawdze potem :D
 public void KlonujRekurencyjnieGleboko(Wezel wezel)
 {
     wezel.Dane = new Osoba.Osoba(Dane);  // osoby s¹ kopiowane i s¹ niezale¿ne
     if (Lewy != null)
     {
         wezel.Lewy = new Wezel();
         Lewy.KlonujRekurencyjnieGleboko(wezel.Lewy);
     }
     if (Prawy != null)
     {
         wezel.Prawy = new Wezel();
         Prawy.KlonujRekurencyjnieGleboko(wezel.Prawy);
     }
 }
Beispiel #29
0
 public void KlonujRekurencyjnie(Wezel wezel)
 {
     wezel.Dane = Dane;  // osoby nie s¹ kopiowane
     if (Lewy != null)
     {
         wezel.Lewy = new Wezel();
         Lewy.KlonujRekurencyjnieGleboko(wezel.Lewy);
     }
     if (Prawy != null)
     {
         wezel.Prawy = new Wezel();
         Prawy.KlonujRekurencyjnieGleboko(wezel.Prawy);
     }
 }
        //metoda która z poprzedników węzła potrafi znaleźć trasę
        private List <WierzcholekGrafu> ZnajdzTraseZPoprzednikow(List <Wezel> poprzednicy, WierzcholekGrafu start, WierzcholekGrafu koniec)
        {
            List <WierzcholekGrafu> trasa = new List <WierzcholekGrafu>();

            Wezel nastepny = poprzednicy.Find(obiekt => obiekt.Klucz == koniec);

            while (nastepny.Poprzednik != null)
            {
                trasa.Add(nastepny.Klucz);
                nastepny = nastepny.Poprzednik;
            }

            return(trasa.Reverse <WierzcholekGrafu>().ToList());
        }