public static void RaktarbaPakolasMoho() { LancoltLista <Csomag> Kimenet = new LancoltLista <Csomag>(); LancoltLista <Csomag> SegedCsomag = KiszallítasraVaroCsomagok.CsakBeolvas("Meghiúsultszállítások.txt"); if (OsszMeret(Kimenet) <= raktarmeret) // megnézzük h az összes csomag befér-e a raktárba { foreach (Csomag akt in SegedCsomag) { Kimenet.PrioritasBerakCsokkeno(akt, akt.Meret); } } else // ha nem, mohó algoritmussal bepakoljuk amit tudunk a többit pedig visszavisszük a küldőnek { Kimenet = ListaRendezErtek(SegedCsomag); SegedCsomag.EgeszListaTorles(); foreach (Csomag akt in SegedCsomag) { if (OsszMeret(Kimenet) < raktarmeret) { SegedCsomag.PrioritasBerakCsokkeno(akt, akt.Ertek); } } } Kimenet = SegedCsomag; foreach (Csomag akt in Kimenet) { KiszallitandoCsomagKeszit.Kiirat(akt, "BeolvasniValoTxt.txt"); } }
static void Main(string[] args) { SikertelenKiszallitas v = new SikertelenKiszallitas(KiirTxtbe); SikertelenKiszallitas esemeny = new SikertelenKiszallitas(KiirTxtbe); esemeny += Kiir; LancoltLista <Csomag> Csomagok = new LancoltLista <Csomag>(); Csomag segedCsomag; Stopwatch sw = new Stopwatch();//stopper do { KiszallitandoCsomagKeszit.TxtTorles("Meghiúsultszállítások.txt"); // nehogy visszaolvasson régebbieket sw.Reset(); sw.Start(); int db = 1; while (sw.ElapsedMilliseconds < 24000 && db < 20)//24 mp egy nap { Eleje: KiszallitandoCsomagKeszit.KiszallitandoCsomag("BeolvasniValoTxt.txt", sw); Csomagok = RendezettenBeolvas("BeolvasniValoTxt.txt"); try { segedCsomag = Csomagok.VisszaElsoElem(); } catch (ElfogytakACsomagok e) { Console.WriteLine(e.Msg); goto Eleje; } try { Kiszallitas.Ksz(segedCsomag, sw); } catch (NemSikerultAKisszallítas nem) { Console.WriteLine(nem.Msg); esemeny(segedCsomag); } db++; } sw.Stop(); KiszallitandoCsomagKeszit.TxtTorles("BeolvasniValoTxt.txt"); NapVegeTxtbeIr(Csomagok); // a 24 mp leteltével a még listákban lévő maradék csomagokat kirakja a MeghhiúsúltSzállítások.txt-be Raktar.RaktarbaPakolasMoho(); // a MeghiúsúltSzállítások.txt-ből elhelyezi a raktárba onnan meg vissza a BeolvasniValoTxt.txt-be a csomagokat } while (!SzimulacioVege()); Console.WriteLine("Bezárta a céget."); Console.ReadLine(); }
}//Szimulálja a futár úton tölött idejét public static void Ksz(Csomag Csomag, Stopwatch sw) // sw kell mert leellenőrzi egyáltalán van-e még ideje kiszállítani { FutarIdo(); if (sw.ElapsedMilliseconds / 1000 < Csomag.Prioritas && Csomag.Prioritas != 100 && Csomag.Prioritas != -1 && rnd.Next(0, 101) < 90) { KiszallitandoCsomagKeszit.Kiirat(Csomag, "Kivitt.txt"); Console.WriteLine("A csomag sikeresen kézbesítve lett: " + Csomag.Fajta); } else if (Csomag.Prioritas == -1 && rnd.Next(0, 101) < 90) { KiszallitandoCsomagKeszit.Kiirat(Csomag, "Kivitt.txt"); Console.WriteLine("A csomag sikeresen kézbesítve lett: " + Csomag.Fajta); } else if (Csomag.Prioritas == 100 && rnd.Next(0, 101) < 90) { KiszallitandoCsomagKeszit.Kiirat(Csomag, "Kivitt.txt"); Console.WriteLine("A csomag sikeresen kézbesítve lett: " + Csomag.Fajta); } else { throw new NemSikerultAKisszallítas(Csomag, "Nem sikerült a kiszállítás az alábbi csomagnál: " + Csomag.Fajta + " " + Csomag.Prioritas + " " + Csomag.Meret + " " + Csomag.Ertek); } }//Kiszállítást szimláló metódus
} // teszteléshez static void KiirTxtbe(Csomag csomag) { KiszallitandoCsomagKeszit.Kiirat(csomag, "Meghiúsultszállítások.txt"); }