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); }
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); }
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); }
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]; }
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); }
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); }
public int DarabElem(LancoltLista lista) { ListaElem p = fej; int db = 0; while (p != null) { db++; p = p.kovetkezo; } return(db); }
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)); } } }
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) }; } } } }
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); }
public LancoltLista KitorolListabol(int ID, LancoltLista lista) { KitorolID(ID, lista); return(lista); }
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); } } } } }