Пример #1
0
        static void KarincaSabitDegerDizi()
        {
            Karinca[] karincalarDizi = new Karinca[5]; //karıncaları tutmak için dizi oluştur

            for (int i = 0; i < 5; i++)                //karıncaları oluştur ve diziye at
            {
                karincalarDizi[i] = new Karinca(String.Format("Karinca {0}", i + 1));
            }
            cukurDerinlikleri = new[] { 3, 2, 4 };
            cukurlar          = new Stack <Karinca> [3];
            for (int i = 0; i < 3; i++) //çukurları oluştur
            {
                cukurlar[i] = new Stack <Karinca>(cukurDerinlikleri[i]);
            }

            int  siradakiKarinca = 0;
            bool stop            = false;

            for (int i = 0; i < cukurlar.Length; i++)                      //çukurları döngüye al
            {
                while (cukurlar[i].Count != cukurDerinlikleri[i] && !stop) //çukur dolana kadar ve stop sinyali gelmediği sürece döngü devam eder
                {
                    if (siradakiKarinca >= karincalarDizi.Length)          //çukurlara düşmeyen karınca kalmadıysa
                    {
                        stop = true;                                       //durdurulcak olarak işaretle
                        for (int j = 0; j < i; j++)                        //kendisinden önceki çukurlara bak (en uzaktan en yakına)
                        {
                            if (cukurlar[j].Count != 0)                    //çukur boş değilse
                            {
                                cukurlar[i].Push(cukurlar[j].Pop());       //önceki çukurdan çıkart şu anki çukura at
                                stop = false;                              //karınca eklenebildiği için durdurmayı iptal et
                                break;                                     //for döngüsünden çık
                            }
                        }
                    }
                    else //eğer çukura düşmemiş karınca varsa
                    {
                        cukurlar[i].Push(karincalarDizi[siradakiKarinca]); //en öndeki karıncayı çukura düşür
                        siradakiKarinca++; //sıradakı karıncaya geç
                    }
                }
                stop = false;
            }

            for (int i = 0; i < cukurlar.Length; i++)
            {
                while (cukurlar[i].Count > 0)
                {
                    cukurlar[i].Pop();
                }
            }
        }
Пример #2
0
        static void KarincaSabitDegerDizi()
        {
            Karinca[] karincalarDizi = new Karinca[5]; //karıncaları tutmak için dizi oluştur

            for (int i = 0; i < 5; i++) //karıncaları oluştur ve diziye at
            {
                karincalarDizi[i] = new Karinca(String.Format("Karinca {0}", i + 1));
            }
            cukurDerinlikleri = new[] { 3, 2, 4 };
            cukurlar = new Stack<Karinca>[3];
            for (int i = 0; i < 3; i++) //çukurları oluştur
                cukurlar[i] = new Stack<Karinca>(cukurDerinlikleri[i]);

            int siradakiKarinca = 0;
            bool stop = false;
            for (int i = 0; i < cukurlar.Length; i++) //çukurları döngüye al
            {
                while (cukurlar[i].Count != cukurDerinlikleri[i] && !stop) //çukur dolana kadar ve stop sinyali gelmediği sürece döngü devam eder
                {
                    if (siradakiKarinca >= karincalarDizi.Length) //çukurlara düşmeyen karınca kalmadıysa
                    {
                        stop = true; //durdurulcak olarak işaretle
                        for (int j = 0; j < i; j++) //kendisinden önceki çukurlara bak (en uzaktan en yakına)
                        {
                            if (cukurlar[j].Count != 0) //çukur boş değilse
                            {
                                cukurlar[i].Push(cukurlar[j].Pop()); //önceki çukurdan çıkart şu anki çukura at
                                stop = false; //karınca eklenebildiği için durdurmayı iptal et
                                break; //for döngüsünden çık
                            }
                        }
                    }
                    else //eğer çukura düşmemiş karınca varsa
                    {
                        cukurlar[i].Push(karincalarDizi[siradakiKarinca]); //en öndeki karıncayı çukura düşür
                        siradakiKarinca++; //sıradakı karıncaya geç
                    }
                }
                stop = false;
            }

            for (int i = 0; i < cukurlar.Length; i++)
            {
                while (cukurlar[i].Count > 0)
                    cukurlar[i].Pop();
            }
        }