예제 #1
0
 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++;
         }
     }
 }
예제 #2
0
파일: Dispecer.cs 프로젝트: ddrempe/uzdiz
        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
        }
예제 #3
0
 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
     });
 }
예제 #4
0
        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);
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
        /// <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);
        }
예제 #7
0
        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);
        }