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); }
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); } } } }
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(); }