示例#1
0
文件: BTS.cs 项目: belhart/sztf2_nhf
        static bool Fk(int szint, bool r, Raktar raktar, bool[] E)
        {
            if (r == false)
            {
                return(true);
            }
            bool seged;

            seged = raktar.getHely(raktar.lista.IDthElem(szint + 1), true);
            return(seged);
        }
示例#2
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);
        }
示例#3
0
        private void Utbanvan(ref int[] lista, ButorAlap elem, Raktar raktar)
        {
            if (elem == null || elem.BalFelsoKoordinata == null)
            {
                throw new NincsARaktarbanException()
                      {
                          HibaUzenet = "[ERR]Nincs benne a raktárban"
                      }
            }
            ;
            int minimum1;
            int minimum2;

            if (elem is NormalButor)
            {
                minimum1 = Math.Min(elem.Szelesseg, elem.Hosszusag);
                minimum2 = Math.Min(Math.Max(elem.Szelesseg, elem.Hosszusag), elem.Magassag);
            }
            else
            {
                minimum1 = elem.Hosszusag;
                minimum2 = elem.Szelesseg;
            }
            int balalsoKoordinata = int.Parse(elem.BalFelsoKoordinata.Split()[0]) + minimum1 + 1;
            int bal  = int.Parse(elem.BalFelsoKoordinata.Split()[1]);
            int jobb = bal + minimum2;
            int db   = 0;

            for (int i = bal; i < jobb; i++)
            {
                for (int j = balalsoKoordinata; j < raktar.raktarButorokkal.GetLength(1); j++)
                {
                    if (!lista.Contains(raktar.raktarButorokkal[j, i]) && raktar.raktarButorokkal[j, i] != elem.ID)
                    {
                        lista[db++] = raktar.raktarButorokkal[j, i];
                    }
                }
            }
            if (elem is AlacsonyButor)
            {
                if ((elem as AlacsonyButor).rajtaLevoButorIDk != "")
                {
                    int rajtadb = (elem as AlacsonyButor).rajtaLevoButorIDk.Count(Char.IsWhiteSpace) + 1;
                    for (int i = 0; i < rajtadb; i++)
                    {
                        lista[db++] = int.Parse((elem as AlacsonyButor).rajtaLevoButorIDk.Split()[i]);
                    }
                }
            }
        }
示例#4
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)
                              };
                    }
                }
            }
        }
示例#5
0
文件: BTS.cs 项目: belhart/sztf2_nhf
        public static void BTS(int szint, ref bool[] E, bool[,] R, ref bool van, Raktar raktar)
        {
            int i = -1;

            while (!van && i < 2)
            {
                i++;
                if (Ft(szint, R[szint, i], raktar, E))
                {
                    if (Fk(szint, R[szint, i], raktar, E))
                    {
                        E[szint] = R[szint, i];
                        if (szint == raktar.ButorDarab - 1)
                        {
                            van = true;
                        }
                        else
                        {
                            BTS(szint + 1, ref E, R, ref van, raktar);
                        }
                    }
                }
            }
        }
示例#6
0
        static void Main(string[] args)
        {
            Raktar raktar = new Raktar(50, 50, 45);

            raktar.lista.NemFerBeAlap += OnNemFerBeAlap;
            raktar.UjHely             += OnUjHely;
            Console.WriteLine("Az adatok beolvasasa közbeni problémák:");
            raktar.AdatHelyessegEllenorzes();
            Console.WriteLine("\n-------------------\nSikeresen beolvasott butorok");
            raktar.lista.Bejaras();
            raktar.OsszesButorElhelyezeseARaktarban(false);
            Console.WriteLine("Enter a folytatashoz");
            Console.ReadLine();
            bool vege = false;

            while (vege != true)
            {
                Console.Clear();
                Console.WriteLine("Opciók\n\n1. bútorok kilistázása\n2. bútor kihozás\n3. kilépés");
                Console.Write("Választott opció: ");
                string opcio = Console.ReadLine();
                switch (opcio)
                {
                case "1":
                    Console.Clear();
                    raktar.lista.Bejaras();
                    Console.WriteLine("Enter a folytatashoz");
                    Console.ReadLine();
                    break;

                case "2":
                    Console.Clear();
                    raktar.RaktarGrafKiir();
                    Console.Write("Kihozni kivant butor ID-je: ");
                    int kihozButorId = int.Parse(Console.ReadLine());
                    if (kihozButorId <= 0 || kihozButorId > raktar.lista.DarabElem(raktar.lista))
                    {
                        Console.WriteLine("Az ID-nek nagyobbnak kell lennie mint 0 és kisebb mint " + (raktar.lista.DarabElem(raktar.lista) + 1));
                    }
                    else
                    {
                        try
                        {
                            raktar.ButorKihozatal(kihozButorId, raktar);
                        }
                        catch (NincsARaktarbanException e)
                        {
                            Console.WriteLine(e.HibaUzenet);
                        }
                        catch (NincsTobbHelyButornakTeljesRendezesElottException)
                        {
                            raktar.raktarButorokkal = new int[raktar.Szelesseg, raktar.Hosszusag];
                            raktar.OsszesButorElhelyezeseARaktarban(true);
                        }
                        catch (NincsTobbHelyButornakTeljesRendezesUtanException e)
                        {
                            Console.WriteLine(e.HibaUzenet);
                            for (int i = 0; i < e.elemek.DarabElem(e.elemek); i++)
                            {
                                Console.WriteLine(e.elemek.NthElem(i));
                            }
                        }
                    }
                    Console.WriteLine("Enter a folytatashoz");
                    Console.ReadLine();
                    break;

                case "3":
                    vege = true;
                    break;

                default:
                    break;
                }
            }
        }
示例#7
0
文件: BTS.cs 项目: belhart/sztf2_nhf
 static bool Ft(int szint, bool r, Raktar raktar, bool[] E)
 {
     return(true);
 }
示例#8
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);
                        }
                    }
                }
            }
        }