예제 #1
0
        public string Simular()
        {
            log    = "";
            lista  = new ListaCircular();
            cola   = new Cola();
            random = new Random();
            Proceso actual;
            int     atendidos   = 0;
            int     ciclosVacia = 0;

            for (int i = 0; i < 100; i++)
            {
                //Thread.Sleep(10);
                if (random.Next(20) < 7)
                {
                    Proceso p = new Proceso();
                    lista.Agregar(p);
                    log += "(Agregado) -> " + p.ToString();
                }

                if (lista.Size != 0)
                {
                    actual = lista.Ver();
                    actual.Ciclos--;
                    if (actual.Ciclos == 0)
                    {
                        atendidos++;
                        log += "(Eliminado) -> " + lista.Eliminar().ToString();
                    }
                }
                else
                {
                    ciclosVacia++;
                }
            }

            int ciclosFaltantes = 0;
            int sizeBefore      = lista.Size;

            for (int i = 0; i < lista.Size; i++)
            {
                Proceso p = lista.Eliminar();

                ciclosFaltantes += p.Ciclos;
            }

            return("Vacia: " + ciclosVacia + " ciclos \t" + "Atendidos: " + atendidos + " procesos \t" + "Pendientes " + sizeBefore + " procesos \t" + "Ciclos faltantes: " + ciclosFaltantes + "\r\n");
        }
예제 #2
0
        public string Simular()
        {
            cola   = new Cola();
            random = new Random();
            Proceso actual;
            int     atendidos   = 0;
            int     ciclosVacia = 0;

            for (int i = 0; i < 300; i++)
            {
                if (random.Next(20) < 7)
                {
                    cola.Encolar(new Proceso());
                }

                if (cola.Size != 0)
                {
                    actual = cola.Ver();
                    if (actual.Ciclos == 0)
                    {
                        atendidos++;
                        cola.Decolar();
                    }
                    actual.Ciclos--;
                }
                else
                {
                    ciclosVacia++;
                }
            }

            int ciclosFaltantes = 0;

            for (int i = 0; i < cola.Size; i++)
            {
                Proceso p = cola.Decolar();
                ciclosFaltantes += p.Ciclos;
            }

            return("Vacia: " + ciclosVacia + " ciclos \t" + "Atendidos: " + atendidos + " procesos \t" + "Pendientes " + cola.Size + " procesos \t" + "Ciclos faltantes: " + ciclosFaltantes + "\r\n");
        }