private static void SkupljajOtpad(int brojCiklusa) { while (brojCiklusa > brojacCiklusa) { foreach (var vozilo in listaVozilaZaSkupljanje) { if (listaVozilaZaSkupljanje.Count > 0 && !vozilo.Iterator.JelGotovo) { Spremnik s = vozilo.Iterator.TrenutniSpremnik; if (s.KolicinaOtpada > 0) { if (vozilo.Dostupno > s.KolicinaOtpada) { IspisKonzola.IspisKonzola.IspisUvjetni("-----------------------------------------------------------------------"); vozilo.Popunjenost += s.KolicinaOtpada; vozilo.Dostupno = vozilo.Nosivost - vozilo.Popunjenost; s.KolicinaOtpada = 0; vozilo.Iterator.Sljedeci(); IspisKonzola.IspisKonzola.IspisUvjetni(ciklus + " CIKLUS" + " Vozilo " + vozilo.Naziv + " Nosivost: " + vozilo.Nosivost + " Pokupilo: " + vozilo.Popunjenost); ciklus++; } else { vozilo.Status = "Praznjenje"; ciklus++; } } } brojacCiklusa++; } } }
private static void PokupiOtpad(Vozilo vozilo, ref bool voziloIzaslo) { voziloIzaslo = false; //preskoči prazne spremnike while (!vozilo.IteratorS.Kraj && vozilo.IteratorS.Trenutni.KolicinaOtpada == 0) { vozilo.IteratorS.Sljedeci(); } if (vozilo.IteratorS.Kraj) { Program.Ispisivac.ObavljeniPosao($"C{TrenutniCiklus} Nema vise otpada za vozilo {vozilo.ID}"); vozilo.PromijeniStanje(VrstaStanja.Parkirano); //vozilo za koje vise nema otpada se vraća na prakiralište voziloIzaslo = true; return; } Spremnik spremnik = vozilo.IteratorS.Trenutni; float preostaliKapacitetVozila = vozilo.Nosivost - vozilo.KolicinaOtpada; float kolicinaUzetogOtpadaSpremnika = spremnik.KolicinaOtpada; if (kolicinaUzetogOtpadaSpremnika > preostaliKapacitetVozila) { float kolicinaOtpadaViska = kolicinaUzetogOtpadaSpremnika - preostaliKapacitetVozila; kolicinaUzetogOtpadaSpremnika = kolicinaUzetogOtpadaSpremnika - kolicinaOtpadaViska; Program.Ispisivac.ObavljeniPosao($"ODVOZ Vozilo {vozilo.ID} ({vozilo.VrstaOtpada}) je puno ({vozilo.Nosivost}kg) i mora na odvoz."); Program.Ispisivac.ObavljeniPosao($"ODVOZ Spremnik {spremnik.ID} ima jos {kolicinaOtpadaViska}kg otpada vrste {spremnik.NazivPremaOtpadu}."); Statistika.VoziloBrojOdlazakaNaDeponij[vozilo.ID]++; PrijevozPutnika prijevozPutnika = new PrijevozPutnika(vozilo, vozilo.ID); prijevozPutnika.UkrcajPutnika($"Putnik{TrenutniCiklus}"); listaPrijevozPutnika.Add(prijevozPutnika); //ako je vozilo puno promijeni stanje, posalji ga na praznjenje n ciklusa nakon kojih se vraca na kraj liste vozilo.PromijeniStanje(VrstaStanja.Praznjenje); vozilo.BrojPreostalihCiklusa = Program.Parametri.DohvatiParametarInt("brojRadnihCiklusaZaOdvoz"); voziloIzaslo = true; } vozilo.KolicinaOtpada += kolicinaUzetogOtpadaSpremnika; spremnik.KolicinaOtpada -= kolicinaUzetogOtpadaSpremnika; Statistika.VoziloBrojPreuzetihSpremnika[vozilo.ID]++; Statistika.VoziloKolicinaPreuzetogOtpada[vozilo.ID] += kolicinaUzetogOtpadaSpremnika; Program.Ispisivac.ObavljeniPosao($"C{TrenutniCiklus} Vozilo {vozilo.ID} ({vozilo.VrstaOtpada}) trenutno ima {vozilo.KolicinaOtpada}kg otpada, preostali kapacitet je {vozilo.Nosivost - vozilo.KolicinaOtpada}kg."); vozilo.IteratorS.Sljedeci(); //TODO: provjeri ako je iduci spremnik u iducoj ulici i iteriraj ulicu }
public SpremnikIM ToSpremnikIM(Spremnik spremnik) { return(new SpremnikIM { SpremnikId = spremnik.SpremnikId, PodrumId = spremnik.PodrumId, ŠifraSpremnika = spremnik.ŠifraSpremnika, Napunjenost = (float)spremnik.Napunjenost, SortaVinaId = spremnik.SortaVinaId, Kapacitet = (float)spremnik.Kapacitet, CijenaLitre = spremnik.CijenaLitre, BerbaId = spremnik.BerbaId, FazaIzrade = spremnik.FazaIzrade, PunilacId = spremnik.PunilacId, VrstaSpremnikaId = spremnik.VrstaSpremnikaId }); }
public List <Spremnik> GenerirajSpremnikeMali() { List <Spremnik> listaSpremnika = new List <Spremnik>(); foreach (var ulica in ListaUlica) { foreach (var vrstaSpremnika in ListaVrstaSpremnika) { for (int i = 0; i < ulica.ListaMalihKorisnika.Count;) { if (vrstaSpremnika.BrojMalih == 0) { break; } Spremnik s = new Spremnik(); s.Id = spremnikId++; s.Naziv = vrstaSpremnika.Naziv; s.Nosivost = vrstaSpremnika.Nosivost; s.PripadaUlici = ulica.Id; int brojac = 1; while (brojac <= vrstaSpremnika.BrojMalih && i < ulica.ListaMalihKorisnika.Count) { KorisnikB k = ulica.ListaMalihKorisnika[i]; s.ListaKorisnika.Add(k); brojac++; i++; } listaSpremnika.Add(s); ulica.ListaSpremnikaUlice.Add(s); } } } return(listaSpremnika); }
/// <summary> /// Obzirom na kategoriju korisnika određuje koju brojnost spremnika treba dohvatiti. /// </summary> /// <param name="spremnikVrsta"></param> /// <param name="kategorija"></param> /// <returns></returns> private static int OdrediBrojnostSpremnika(Spremnik spremnikVrsta, Kategorija kategorija) { int brojnost = 0; switch (kategorija) { case Kategorija.Mali: brojnost = spremnikVrsta.BrojnostMali; break; case Kategorija.Srednji: brojnost = spremnikVrsta.BrojnostSrednji; break; case Kategorija.Veliki: brojnost = spremnikVrsta.BrojnostVeliki; break; default: break; } return(brojnost); }
/// <summary> /// Stvara listu spremnika prema vrsti spremnika i kategoriji korisnika. /// U svaki spremnik zapisuje identifikatore jednog ili više korisnika koji imaju pravo na taj spremnik. /// </summary> /// <param name="spremnikID"></param> /// <param name="ulica"></param> /// <param name="spremnikVrsta"></param> /// <param name="kategorija"></param> /// <returns></returns> private static List <Spremnik> StvoriSpremnikePoVrsti(ref int spremnikID, Ulica ulica, Spremnik spremnikVrsta, Kategorija kategorija) { List <Korisnik> korisnici = OdrediListuKorisnika(ulica, kategorija); List <Spremnik> spremnici = new List <Spremnik>(); int brojnost = OdrediBrojnostSpremnika(spremnikVrsta, kategorija); for (int i = 0; i < korisnici.Count;) { if (brojnost == 0) { break; } Spremnik spremnik = new Spremnik(); spremnik.ID = spremnikID; spremnikID++; spremnik.NazivPremaOtpadu = spremnikVrsta.NazivPremaOtpadu; spremnik.Vrsta = spremnikVrsta.Vrsta; spremnik.Nosivost = spremnikVrsta.Nosivost; spremnik.UlicaID = ulica.ID; int brojacKorisnikaGrupe = 1; while (brojacKorisnikaGrupe <= brojnost && i < korisnici.Count) { Korisnik korisnik = korisnici[i]; spremnik.Korisnici.Add(korisnik.ID); brojacKorisnikaGrupe++; i++; } spremnici.Add(spremnik); } return(spremnici); }
public static List <Spremnik> StvoriSpremnike(List <Ulica> ulice, List <Spremnik> spremniciVrste) { int spremnikID = 1; int brojacKorisnici; List <Spremnik> spremnici = new List <Spremnik>(); foreach (Ulica ulica in ulice) { foreach (Spremnik spremnikVrsta in spremniciVrste) { brojacKorisnici = 0; while (brojacKorisnici < ulica.KorisniciMali.Count) { if (spremnikVrsta.BrojnostMali == 0) { break; } Spremnik spremnik = new Spremnik(); spremnik = new Spremnik(); spremnik.ID = spremnikID; spremnik.Naziv = spremnikVrsta.Naziv; int brojacKorisnikaGrupe = 1; while (brojacKorisnikaGrupe <= spremnikVrsta.BrojnostMali && brojacKorisnici < ulica.KorisniciMali.Count) { Korisnik korisnik = ulica.KorisniciMali[brojacKorisnici]; spremnik.Korisnici.Add(korisnik.ID); brojacKorisnikaGrupe++; brojacKorisnici++; } spremnici.Add(spremnik); } brojacKorisnici = 0; while (brojacKorisnici < ulica.KorisniciSrednji.Count) { if (spremnikVrsta.BrojnostSrednji == 0) { break; } Spremnik spremnik = new Spremnik(); spremnik = new Spremnik(); spremnik.ID = spremnikID; spremnik.Naziv = spremnikVrsta.Naziv; int brojacKorisnikaGrupe = 1; while (brojacKorisnikaGrupe <= spremnikVrsta.BrojnostSrednji && brojacKorisnici < ulica.KorisniciSrednji.Count) { Korisnik korisnik = ulica.KorisniciSrednji[brojacKorisnici]; spremnik.Korisnici.Add(korisnik.ID); brojacKorisnikaGrupe++; brojacKorisnici++; } spremnici.Add(spremnik); } brojacKorisnici = 0; while (brojacKorisnici < ulica.KorisniciVeliki.Count) { if (spremnikVrsta.BrojnostVeliki == 0) { break; } Spremnik spremnik = new Spremnik(); spremnik = new Spremnik(); spremnik.ID = spremnikID; spremnik.Naziv = spremnikVrsta.Naziv; int brojacKorisnikaGrupe = 1; while (brojacKorisnikaGrupe <= spremnikVrsta.BrojnostVeliki && brojacKorisnici < ulica.KorisniciVeliki.Count) { Korisnik korisnik = ulica.KorisniciVeliki[brojacKorisnici]; spremnik.Korisnici.Add(korisnik.ID); brojacKorisnikaGrupe++; brojacKorisnici++; } spremnici.Add(spremnik); } } } return(spremnici); }