Beispiel #1
0
        public Konuk[] konuk_dizi_olusturma()
        {
            Konuk[] konuklar = new Konuk[konuk_say];
            Random random_sayi1 = new Random((int)DateTime.Now.Ticks);

            for (int i = 0; i < konuk_say; i++)
            {
                konuklar[i] = new Konuk();

                int a = random_sayi1.Next(20);
                int b = random_sayi1.Next(20);
                int c = random_sayi1.Next(7);

                konuklar[i].ad = isim_matrisi[0, a];
                konuklar[i].soyad = isim_matrisi[1, b];
                konuklar[i].dil = dil_dizisi[c];
            }
            return konuklar;
        }
Beispiel #2
0
 static ArrayList transferListesiAl(Otel[] otelList, ArrayList tek)
 {
     Konuk konuk = new Konuk();
     ArrayList transferList = new ArrayList();
     for (int i = 0; i < otelList.Length; i++)//otelleri dolaş
     {
         for (int j = 0; j < 7; j++ )//otelde anadil kontrol listesini dolaş
         {
             if (otelList[i].kontrol[j] == 1)//yalnız kalan var mı?
             {
                 for (int k = 0; k < otelList[i].kalanlar.Count; k++)//varsa otelde kalanları dolaş
                 {
                     konuk = (Konuk)otelList[i].kalanlar[k];
                     if (j == anadilIndex(konuk.dil) && tek.Contains(konuk) == false)//j ile belirlenen yalnız kalan dil tutuyorsa ve yalnız kalmak zorunda değilse
                     {
                         transferList.Add(otelList[i].kalanlar[k]);//transfer listesine ekle
                     }
                 }
             }
         }
     }
     return transferList;//transfer listesini döndür
 }
Beispiel #3
0
        static void transferEt(Otel[] otelList, Konuk[] konukList, ArrayList tek)
        {
            ArrayList transfer = new ArrayList();
            Konuk konukNesne = new Konuk();
            Konuk konukKarsilastirma = new Konuk();
            int toplamKont = kontenjanAl(otelList);
            transfer = transferListesiAl(otelList, tek);

            if (konukList.Length != toplamKont)
            {
                for (int i=0; i < transfer.Count; i++ )
                {
                    konukNesne = (Konuk)transfer[i];
                    for (int j = 0; j + 1 < transfer.Count; j++)
                    {
                        konukKarsilastirma = (Konuk)transfer[j + 1];
                        if (konukKarsilastirma.Equals(konukNesne) == true && otelList[konukNesne.kaldigiIndex].kontenjan - otelList[konukNesne.kaldigiIndex].kalan != 0)
                        {
                            otelList[konukNesne.kaldigiIndex].kalanlar.Add(konukKarsilastirma);
                            ++otelList[konukNesne.kaldigiIndex].kontrol[anadilIndex(konukKarsilastirma.dil)];
                            otelList[konukKarsilastirma.kaldigiIndex].kalanlar.Remove(konukKarsilastirma);
                            --otelList[konukKarsilastirma.kaldigiIndex].kontrol[anadilIndex(konukKarsilastirma.dil)];
                            konukKarsilastirma.kaldigiIndex = konukNesne.kaldigiIndex;
                            transfer.Remove(konukNesne);
                            transfer.Remove(konukKarsilastirma);
                            break;
                        }
                        else if (otelList[konukKarsilastirma.kaldigiIndex].kontenjan - otelList[konukKarsilastirma.kaldigiIndex].kalan != 0)
                        {
                            otelList[konukKarsilastirma.kaldigiIndex].kalanlar.Add(konukNesne);
                            ++otelList[konukKarsilastirma.kaldigiIndex].kontrol[anadilIndex(konukNesne.dil)];
                            otelList[konukNesne.kaldigiIndex].kalanlar.Remove(konukNesne);
                            --otelList[konukNesne.kaldigiIndex].kontrol[anadilIndex(konukNesne.dil)];
                            konukNesne.kaldigiIndex = konukKarsilastirma.kaldigiIndex;
                            transfer.Remove(konukNesne);
                            transfer.Remove(konukKarsilastirma);
                            break;
                        }
                    }
                }
            }
        }
Beispiel #4
0
        //static int menu()
        //{
        //    Console.WriteLine("");
        //    int secim = Convert.ToInt32(Console.ReadLine());
        //    return secim;
        //}
        static void otel_yerleştirme(Otel[] bir_otel, Konuk[] konuklist, int konuksayisi, int otelSayi)
        {
            int toplamKontenjan = 0, dolasimSayaci = 0, ilkdeger = konuksayisi, gecici = 0;
            double bolunecekOran, yerlesecek;

            toplamKontenjan = kontenjanAl(bir_otel);
            bolunecekOran = (double)toplamKontenjan / konuksayisi;

            for (int i = 0; i < otelSayi; ++i)
            {
                yerlesecek = Math.Round((double)bir_otel[i].kontenjan / bolunecekOran);
                for (int j = dolasimSayaci; j < yerlesecek + gecici; ++j)
                {
                    bir_otel[i].kalanlar.Add(konuklist[j]);
                    konuklist[j].kaldigiIndex = i;
                    ++bir_otel[i].kontrol[anadilIndex(konuklist[j].dil)];
                    ++bir_otel[i].kalan;
                    ++dolasimSayaci;
                    --konuksayisi;
                }
                gecici = dolasimSayaci;
                bir_otel[i].yuzde = (double)bir_otel[i].kalan / (double)bir_otel[i].kontenjan;
            }

            if (konuksayisi > 0)
            {
                int min = 100, index = 0;
                while (konuksayisi != 0)
                {
                    for (int j = 0; j < otelSayi; ++j)
                    {
                        if (bir_otel[j].yuzde < min && bir_otel[j].kontenjan - bir_otel[j].kalan != 0)
                            index = j;
                        else if (bir_otel[j].yuzde == min && (bir_otel[j].kontenjan - bir_otel[j].kalan) < (bir_otel[index].kontenjan - bir_otel[index].kalan))
                        {
                            index = j;
                        }
                        bir_otel[index].kalanlar.Add(konuklist[ilkdeger - konuksayisi]);
                        ++bir_otel[index].kalan;
                        --konuksayisi;
                        ++dolasimSayaci;
                        bir_otel[index].yuzde = (double)bir_otel[index].kalan / (double)bir_otel[index].kontenjan;
                        if (konuksayisi == 0)
                            break;
                    }
                }
            }
        }
Beispiel #5
0
 static void otelBazındaKonukListe(Otel[] otelList)
 {
     Konuk yazdir = new Konuk();
     for (int i = 0; i < otelList.Length; i++)
     {
         Console.WriteLine(otelList[i].otel_isim + " Oteli Konuk Listesi:");
         Console.WriteLine("Otelde kalan konuk sayısı : " + otelList[i].kalan+"\n");
         for (int j = 0; j < otelList[i].kalanlar.Count; j++)
         {
             yazdir = (Konuk)otelList[i].kalanlar[j];
             yazdir.yazdır();
         }
         Console.WriteLine();
     }
 }
Beispiel #6
0
        static ArrayList dilKontrol(Konuk[] konukList)
        {
            int[] kontrol = { 0, 0, 0, 0, 0, 0, 0 };
            string[] arama = { "TR", "ENG", "GER", "FRE", "JAP", "CHN", "RUS" };
            ArrayList tek = new ArrayList();
            Konuk yazdir = new Konuk();

            for (int i = 0; i < konukList.Length; i++)//Konuk tek kalma için listesi kontrol edilir
            {
                ++kontrol[anadilIndex(konukList[i].dil)];
            }
            for (int j = 0; j < 7;j++ )
            {
                if (kontrol[j] == 1)
                {
                    for (int k = 0; k < konukList.Length; k++)
                    {
                        if (arama[j].Equals(konukList[k].dil) == true)//yalnız kalacakları belirle
                            tek.Add(konukList[k]);
                    }
                }
            }

            if (tek.Count != 0)
            {
                Console.BackgroundColor = ConsoleColor.Red;
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("Aşağıda listelenen kişiler aynı dilde tek katılımcı olduğundan mecburen yalnız kalacaklardır!");
                Console.ResetColor();
                for (int i = 0; i < tek.Count; i++)
                {
                    yazdir = (Konuk)tek[i];
                    yazdir.yazdır();
                }
                Console.WriteLine("\nDevam etmek için bir tuşa basın.");
                Console.ReadKey();
            }
            Console.Clear();
            return tek;
        }