コード例 #1
0
        public static List <Kullanıcı> YazıcıPQhesapla(int[] sayfaSayilari, string[] kullaniciIsimleri, List <Kullanıcı> kullanıcıPQ, YazıcıPQ PQ, int kontrol)
        {
            int   indis = 0, sayfaSayısı, sayac = 0;
            float topSüre = 0, toplam = 0;

            List <int> listePQ = new List <int>();

            listePQ.AddRange(sayfaSayilari);

            if (kontrol == 1) // random olarak yollanan belgelerde kontrol 0 olur mainde kuyruğa enque ile eklenmiştir; if true dönüyorsa enque ile sayfa sayıları eklenir
            {
                for (int l = 0; l < sayfaSayilari.Length; l++)
                {
                    PQ.enque(sayfaSayilari[l]);
                }
            }

            sayac = PQ.elemanSay;
            Console.WriteLine("KULLANICI İSMİ  İŞLEM SÜRESİ(İTS)\n--------------  ----------------");

            for (int k = 0; k < sayac; k++)
            {
                Kullanıcı gönderen = new Kullanıcı();
                sayfaSayısı = PQ.deque();
                toplam     += sayfaSayısı;

                for (int y = 0; y < listePQ.Count; y++)
                {
                    if (sayfaSayısı == listePQ[y])
                    {
                        listePQ[y] = 0;
                        indis      = y;
                        break;
                    }
                }

                gönderen.isim        = kullaniciIsimleri[indis];
                gönderen.işlemSüresi = (toplam) / 10;
                gönderen.sayfaSayisi = sayfaSayısı;
                kullanıcıPQ.Add(gönderen);

                topSüre += kullanıcıPQ[k].işlemSüresi;

                Console.Write(kullanıcıPQ[k].isim);
                Console.Write(" --> {0:0.0}", kullanıcıPQ[k].işlemSüresi);
                Console.WriteLine();
            }

            Console.WriteLine("Ortalama işlem süresi(OİTS) : {0:0.0} \n", (topSüre / sayac));
            return(kullanıcıPQ);
        }
コード例 #2
0
        public static void enUygunYazıcıyıBul(int[] sayfaSayilari, string[] işİsimleri)
        {
            float toplam = 0, ortSüre = 0, kontrolSüre = 1000;

            YazıcıFIFO FIFO  = new YazıcıFIFO();
            YazıcıPQ   PQ    = new YazıcıPQ();
            YazıcıFIFO FIFO2 = new YazıcıFIFO();
            YazıcıPQ   PQ2   = new YazıcıPQ();

            List <Kullanıcı> listeFIFO = new List <Kullanıcı>();
            List <Kullanıcı> listePQ   = new List <Kullanıcı>();
            List <Kullanıcı> enİyiFIFO = new List <Kullanıcı>();
            List <Kullanıcı> enİyiPQ   = new List <Kullanıcı>();

            for (int i = 0; i < sayfaSayilari.Length - 1; i++)
            {
                for (int j = i; j < sayfaSayilari.Length; j++)
                {
                    List <int> sayfalar = new List <int>();
                    sayfalar.AddRange(sayfaSayilari);

                    PQ.enque(sayfalar[i]);
                    FIFO2.enque(sayfalar[i]);
                    sayfalar.RemoveAt(i);

                    PQ.enque(sayfalar[j]);
                    FIFO2.enque(sayfalar[j]);
                    sayfalar.RemoveAt(j);

                    for (int k = 0; k < sayfalar.Count; k++)
                    {
                        FIFO.enque(sayfalar[k]);
                        PQ2.enque(sayfalar[k]);
                    }

                    YazıcıFIF0hesapla(sayfaSayilari, işİsimleri, listeFIFO, FIFO, 0);
                    YazıcıPQhesapla(sayfaSayilari, işİsimleri, listePQ, PQ, 0);

                    for (int y = 0; y < listeFIFO.Count; y++)
                    {
                        toplam += listeFIFO[y].işlemSüresi;
                    }

                    for (int y = 0; y < listePQ.Count; y++)
                    {
                        toplam += listePQ[y].işlemSüresi;
                    }

                    ortSüre = toplam / sayfaSayilari.Length;

                    if (ortSüre < kontrolSüre)
                    {
                        kontrolSüre = ortSüre;
                        enİyiFIFO   = listeFIFO;
                        enİyiPQ     = listePQ;
                    }

                    listePQ.Clear();
                    listeFIFO.Clear();
                    toplam = 0;

                    YazıcıFIF0hesapla(sayfaSayilari, işİsimleri, listeFIFO, FIFO2, 0);
                    YazıcıPQhesapla(sayfaSayilari, işİsimleri, listePQ, PQ2, 0);

                    for (int y = 0; y < listeFIFO.Count; y++)
                    {
                        toplam += listeFIFO[y].işlemSüresi;
                    }

                    for (int y = 0; y < listePQ.Count; y++)
                    {
                        toplam += listePQ[i].işlemSüresi;
                    }

                    ortSüre = toplam / sayfaSayilari.Length;

                    if (ortSüre < kontrolSüre)
                    {
                        kontrolSüre = ortSüre;
                        enİyiFIFO   = listeFIFO;
                        enİyiPQ     = listePQ;
                    }
                    Console.WriteLine("FIFO'ya Gidenler");
                    for (int y = 0; y < enİyiFIFO.Count; y++)
                    {
                        Console.WriteLine(enİyiFIFO[y].sayfaSayisi);
                    }

                    Console.WriteLine("PQ'ya Gidenler");
                    for (int y = 0; y < enİyiPQ.Count; y++)
                    {
                        Console.WriteLine(enİyiPQ[y].sayfaSayisi);
                    }
                }
            }
        }
コード例 #3
0
        static void Main(string[] args)
        {
            string[] isimler  = { "Kullanıcı 1", "Kullanıcı 2", "Kullanıcı 3", "Kullanıcı 4", "Kullanıcı 5", "Kullanıcı 6", "Kullanıcı 7", "Kullanıcı 8", "Kullanıcı 9" };
            int[]    sayfalar = { 21, 27, 41, 15, 3, 35, 43, 12, 17 };
            int      seçim    = 0;

            int[]    randomSayfaSayilari = new int[25];
            string[] randomİsİsimleri    = new string[25];
            int      randomSayfa         = 0;

            YazıcıFIFO gidenFIFO = new YazıcıFIFO();
            YazıcıPQ   gidenPQ   = new YazıcıPQ();
            YazıcıRR   gidenRR   = new YazıcıRR();
            YazıcıRR   gidenRR2  = new YazıcıRR();

            List <Kullanıcı> kullanıcılarFIFO = new List <Kullanıcı>();
            List <Kullanıcı> kullanıcılarPQ   = new List <Kullanıcı>();
            List <Kullanıcı> randomKuyruk     = new List <Kullanıcı>();
            List <Kullanıcı> randomKuyruk2    = new List <Kullanıcı>();
            List <Kullanıcı> kullanıcılarRR   = new List <Kullanıcı>();
            List <Kullanıcı> kullanıcılarRR2  = new List <Kullanıcı>();
            List <Kullanıcı> randomKuyrukRR   = new List <Kullanıcı>();

            Console.WriteLine("Belgeler sadece YAZICIFIF0'ya gönderildiğinde :");
            YazıcıFIF0hesapla(sayfalar, isimler, kullanıcılarFIFO, gidenFIFO, 1); // dizideki belgeler sadece yazıcı fifo'ya gönderilir
            Console.WriteLine("Belgeler sadece YAZICIPQ'ya gönderildiğinde :");
            YazıcıPQhesapla(sayfalar, isimler, kullanıcılarPQ, gidenPQ, 1);       //  // dizideki belgeler sadece yazıcı pq'ya gönderilir

            Console.WriteLine("Belgeler her iki yazıcıdan birine random gönderildiğinde :");
            for (int i = 0; i < sayfalar.Length; i++)// random ile ya fıfo ya da pqya yollanacak
            {
                seçim = sayi.Next(0, 2);
                if (seçim == 1)
                {
                    gidenFIFO.enque(sayfalar[i]);
                }
                else
                {
                    gidenPQ.enque(sayfalar[i]);
                }
            }

            randomKuyruk  = YazıcıFIF0hesapla(sayfalar, isimler, randomKuyruk, gidenFIFO, 0);
            randomKuyruk2 = YazıcıPQhesapla(sayfalar, isimler, randomKuyruk2, gidenPQ, 0);
            kazançHesapla(kullanıcılarFIFO, kullanıcılarPQ, randomKuyruk, randomKuyruk2);
            Console.ReadKey();

            List <Kullanıcı> randomIslerFIFO = new List <Kullanıcı>();
            List <Kullanıcı> randomIslerPQ   = new List <Kullanıcı>();

            for (int k = 0; k < 25; k++) // for döngüsü 25 kere döner, 25 tane random iş üretilir
            {
                randomSayfa            = sayi.Next(1, 101);
                randomSayfaSayilari[k] = randomSayfa;
                randomİsİsimleri[k]    = "Kullanıcı " + (k + 1);
            }

            Console.WriteLine("\n25 TANE RANDOM İŞ ÜRETİLDİ !\nİŞ İSİMLERİ  SAYFA SAY.");
            for (int l = 0; l < 25; l++)                                                             //
            {
                Console.WriteLine("{0,-9} --> {1,-5}", randomİsİsimleri[l], randomSayfaSayilari[l]); //Sayfa sayıları, iş numaraları ile birlikte ekrana yazdırılır
            }

            Console.WriteLine("\nRandom üretilen sayfa sayıları sadece YAZICIFIF0'ya gönderildiğinde :");
            YazıcıFIF0hesapla(randomSayfaSayilari, randomİsİsimleri, randomIslerFIFO, gidenFIFO, 1); // random üretilen belgeler sadece yazıcı fifo'ya gönderilir
            Console.WriteLine("\nRandom üretilen sayfa sayıları sadece YAZICIPQ'ya gönderildiğinde :");
            YazıcıPQhesapla(randomSayfaSayilari, randomİsİsimleri, randomIslerPQ, gidenPQ, 1);       // random üretilen belgeler sadece yazıcı pq'ya gönderilir

            List <Kullanıcı> randomKuyrukİş  = new List <Kullanıcı>();
            List <Kullanıcı> randomKuyrukİş2 = new List <Kullanıcı>();

            Console.WriteLine("\nRandom üretilen sayfa sayıları her iki yazıcıdan birine random gönderildiğinde :");
            for (int i = 0; i < randomSayfaSayilari.Length; i++)// random üretilen sayfa sayıları, random olarak ya fıfo ya da pqya yollanacak
            {
                seçim = sayi.Next(0, 2);
                if (seçim == 1)
                {
                    gidenFIFO.enque(randomSayfaSayilari[i]);
                }
                else
                {
                    gidenPQ.enque(randomSayfaSayilari[i]);
                }
                gidenRR2.enque(randomSayfaSayilari[i], i);
            }

            randomKuyrukİş  = YazıcıFIF0hesapla(randomSayfaSayilari, randomİsİsimleri, randomKuyrukİş, gidenFIFO, 0);
            randomKuyrukİş2 = YazıcıPQhesapla(randomSayfaSayilari, randomİsİsimleri, randomKuyrukİş2, gidenPQ, 0);
            kazançHesapla(randomIslerFIFO, randomIslerPQ, randomKuyrukİş, randomKuyrukİş2);

            Console.ReadKey();
            Console.WriteLine("\nRandom üretilen sayfa sayıları YAZICIRR'ye gönderildiğinde :");
            YazıcıRRhesapla(randomSayfaSayilari, randomİsİsimleri, randomKuyrukRR, gidenRR2, 0);//25 iş için
            işlemSüresiArtır(randomKuyrukRR, randomSayfaSayilari.Length);
            kazançRRHesapla(randomIslerFIFO, randomIslerPQ, randomKuyrukRR);

            //enUygunYazıcıyıBul(sayfalar, isimler);

            Console.ReadKey();
        }