Пример #1
0
        private LancoltLista KitorolID(int ID, LancoltLista lista)
        {
            ListaElem elozoElem = null, p = lista.fej;

            while (p != null)
            {
                if (p.tartalom.ID == ID)
                {
                    if (elozoElem == null)
                    {
                        lista.fej.kovetkezo = p.kovetkezo;
                        return(lista);
                    }
                    else
                    {
                        elozoElem.kovetkezo = p.kovetkezo;
                        return(lista);
                    }
                }
                else
                {
                    elozoElem = p;
                }
                p = p.kovetkezo;
            }
            return(lista);
        }
Пример #2
0
        static public LancoltLista Beolvas(LancoltLista lista, int darab)
        {
            string[] lines = File.ReadAllLines(@"adatok.txt");
            int      ID    = 0;

            foreach (string line in lines)
            {
                string[] SplittedLine = line.Split();
                if (SplittedLine[0] == "NORM")
                {
                    NormalButor uj = new NormalButor(int.Parse(SplittedLine[1]), int.Parse(SplittedLine[2]), int.Parse(SplittedLine[3]), ID);
                    lista.VegereBeszuras(uj);
                    ID++;
                }
                else if (SplittedLine[0] == "ALLO")
                {
                    AlloButor uj = new AlloButor(int.Parse(SplittedLine[1]), int.Parse(SplittedLine[2]), int.Parse(SplittedLine[3]), ID);
                    lista.VegereBeszuras(uj);
                    ID++;
                }
                else
                {
                    AlacsonyButor uj = new AlacsonyButor(int.Parse(SplittedLine[1]), int.Parse(SplittedLine[2]), int.Parse(SplittedLine[3]), ID);
                    lista.VegereBeszuras(uj);
                    ID++;
                }
            }
            return(lista);
        }
Пример #3
0
        private LancoltLista KitorolElem(ListaElem elem, LancoltLista lista)
        {
            ListaElem elozoElem = null, p = lista.fej;

            while (p != null)
            {
                if (p.tartalom.Equals(elem.tartalom))
                {
                    if (elozoElem == null)
                    {
                        lista.fej.kovetkezo = p.kovetkezo;
                    }
                    else
                    {
                        elozoElem.kovetkezo = p.kovetkezo;
                    }
                }
                else
                {
                    elozoElem = p;
                }
                p = p.kovetkezo;
            }
            return(lista);
        }
Пример #4
0
 public Raktar(int szelesseg, int magassag, int hossz)
 {
     this.Szelesseg   = szelesseg;
     this.Hosszusag   = hossz;
     this.Magassag    = magassag;
     lista            = new LancoltLista();
     lista            = AdatBeolvasas.Beolvas(lista, ButorDarab);
     raktarButorokkal = new int[Szelesseg, Hosszusag];
 }
Пример #5
0
        public LancoltLista ReID(LancoltLista lista, int darabJo)
        {
            ListaElem p = fej;

            for (int i = 0; i < darabJo; i++)
            {
                p.tartalom.ID = i + 1;
                p             = p.kovetkezo;
            }
            return(lista);
        }
Пример #6
0
        static bool Fk(int szint, bool r, Raktar raktar, bool[] E, LancoltLista lista)
        {
            if (r == false)
            {
                return(true);
            }
            bool seged;

            seged = raktar.getHely(lista.NthElem(szint), false);
            return(seged);
        }
Пример #7
0
        public int DarabElem(LancoltLista lista)
        {
            ListaElem p  = fej;
            int       db = 0;

            while (p != null)
            {
                db++;
                p = p.kovetkezo;
            }
            return(db);
        }
Пример #8
0
        public void OsszesButorElhelyezeseARaktarban(bool UjraRendezes)
        {
            bool van             = false;
            int  butorDarabSeged = ButorDarab;

            int[,] raktarButorokkalseged = raktarButorokkal;
            bool[,] R = new bool[ButorDarab, 2];
            for (int i = 0; i < ButorDarab; i++)
            {
                R[i, 0] = true;
                R[i, 1] = false;
            }
            bool[] E = new bool[ButorDarab];
            BTSs.BTS(0, ref E, R, ref van, this);
            if (UjraRendezes)
            {
                Console.WriteLine("\n\nBefer-e(true/false) teljes ujrarendezes utan + annak a butornak az adatai");
                int          i = 0;
                LancoltLista masikRaktarbaKuldesButorok = new LancoltLista();
                foreach (bool item in E)
                {
                    Console.Write(item + " ");
                    Console.WriteLine(lista.NthElem(i));
                    if (!item)
                    {
                        masikRaktarbaKuldesButorok.VegereBeszuras(lista.NthElem(i));
                    }
                    i++;
                }
                if (masikRaktarbaKuldesButorok.DarabElem(masikRaktarbaKuldesButorok) != 0)
                {
                    for (int j = 0; j < masikRaktarbaKuldesButorok.DarabElem(masikRaktarbaKuldesButorok); j++)
                    {
                        lista.KitorolListabol(masikRaktarbaKuldesButorok.NthElem(j).ID, lista);
                    }
                    throw new NincsTobbHelyButornakTeljesRendezesUtanException()
                          {
                              HibaUzenet = "[ERR]Butor(ok)nak nincs hely teljes ujrarendezés után",
                              elemek     = masikRaktarbaKuldesButorok
                          };
                }
            }
            else
            {
                Console.WriteLine("\n\nBefer-e(true/false) + annak a butornak az adatai");
                for (int i = 0; i < ButorDarab; i++)
                {
                    Console.Write(E[i] + " ");
                    Console.WriteLine(lista.NthElem(i));
                }
            }
        }
Пример #9
0
        public void ButorKihozatal(int ID, Raktar raktar)
        {
            ButorAlap elem = raktar.lista.IDthElem(ID);

            int[] UtbanVanIDk = new int[raktar.ButorDarab - 1];
            Utbanvan(ref UtbanVanIDk, elem, raktar);
            LancoltLista kihozottButorokLista = new LancoltLista();
            int          j = 0;

            while (j < raktar.ButorDarab && UtbanVanIDk[j] != 0)
            {
                kihozottButorokLista.VegereBeszuras(raktar.lista.IDthElem(UtbanVanIDk[j]));
                raktar.ElemKivetel(UtbanVanIDk[j++]);
            }
            raktar.ElemKivetel(ID);
            raktar.lista.KitorolListabol(ID, raktar.lista);
            raktar.ButorDarab--;
            int kihozottDb = kihozottButorokLista.DarabElem(kihozottButorokLista);

            if (kihozottDb != 0)
            {
                bool[] OPT = new bool[kihozottDb];
                bool[] E   = new bool[kihozottDb];
                bool[,] R = new bool[kihozottDb, 2];
                for (int i = 0; i < kihozottDb; i++)
                {
                    R[i, 0] = true;
                    R[i, 1] = false;
                }
                bool van = false;
                OptimBTS.OPTIMBTS(0, ref E, R, ref van, this, ref OPT, kihozottButorokLista);
                for (int i = 0; i < kihozottDb; i++)
                {
                    if (OPT[i])
                    {
                        getHely(kihozottButorokLista.NthElem(i), true); // visszarakas a raktarba
                        OnUjHely(kihozottButorokLista.NthElem(i).ID, kihozottButorokLista.NthElem(i).BalFelsoKoordinata);
                    }
                    else
                    {
                        throw new NincsTobbHelyButornakTeljesRendezesElottException()
                              {
                                  HibaUzenet = "[ERR]Egy butornak nem sikerült helyet találni",
                                  elem       = kihozottButorokLista.NthElem(i)
                              };
                    }
                }
            }
        }
Пример #10
0
        public LancoltLista ListaFeldolgozas(LancoltLista lista, int szelesseg, int hosszusag, int magassag, ref int darab)
        {
            ListaElem p          = lista.fej;
            int       nemFerBeDB = 0;

            while (p != null)
            {
                if (JoAdat(p, szelesseg, hosszusag, magassag) == false)
                {
                    OnNemFerBe(p.tartalom.ID);
                    lista = KitorolElem(p, lista);
                    nemFerBeDB++;
                    p = p.kovetkezo;
                }
                else
                {
                    p = p.kovetkezo;
                    darab++;
                }
            }
            return(lista);
        }
Пример #11
0
 public LancoltLista KitorolListabol(int ID, LancoltLista lista)
 {
     KitorolID(ID, lista);
     return(lista);
 }
Пример #12
0
        public static void OPTIMBTS(int szint, ref bool[] E, bool[,] R, ref bool van, Raktar raktar, ref bool[] OPT, LancoltLista lista)
        {
            int i = -1;

            while (i < 1)
            {
                if (szint == lista.DarabElem(lista) - 1)
                {
                    ;
                }
                i++;
                if (Ft(szint, R[szint, i], raktar, E))
                {
                    if (Fk(szint, R[szint, i], raktar, E, lista))
                    {
                        E[szint] = R[szint, i];
                        if (szint == lista.DarabElem(lista) - 1)
                        {
                            if (!van || (Josag(E) > Josag(OPT)))
                            {
                                for (int j = 0; j < E.Length; j++)
                                {
                                    OPT[j] = E[j];
                                }
                            }
                            van = true;
                        }
                        else
                        {
                            OPTIMBTS(szint + 1, ref E, R, ref van, raktar, ref OPT, lista);
                        }
                    }
                }
            }
        }