For Döngüsü ile Yıldızlardan Piramit Yapma

For Döngüsü ile Yıldızlardan Piramit Yapma işlemini inceleyeceğiz. Alttaki şekilde görüldüğü gibi 5 satırdan oluşan ve her satırda yıldız sayısının giderek arttığı bir yapı var.  Bu soru birçok kitapta var ama çözümü kaynaklarda yok. 



Bu şeklin algoritmasını nasıl çıkarırsınız? Soldaki boşluklara dikkat edelim. En altta 5 yıldız olduğuna göre boşlukları buna göre hesaplayalım.  Hem boşluklar için hem de yıldızlar için ayrı ayrı döngüler açmalıyız. Tabi bu problem matematik gibi, birden fazla yöntemi olabilir, siz de kendiniz daha kısa bir yöntem düşünebilirsiniz.

Eb dıştaki for döngüsü, 5 satır olduğu için  1'den 5'e kadar dönerken, içteki döngü her satırdaki boşlukları ayarlamakla görevli. Yalnız konulacak boşluk sayısını 5-i şeklinde planladık. Yani;

1. satırda 5-i değeri 5-1=4 olacak ve 4 boşluk koyacak,
2. satırda 5-i değeri 5-2=3 olacak ve 3 boşluk koyacak,
....
en sonda 5-i=5-5=0 olacak ve yıldız koymayacak.

Sonraki k döngüsü ise yıldız koymakla görevli. Boşlukları j ödngüsü ile koyduktan sonra k ile yıldızları koyuyoruz. k ödngüsü de i ödngüsüne bağlı.

i değeri 1 iken k döngüsü 1 defa dönüyor, 1 yıldız koyuyor,
i değeri 2 iken k döngüsü 2 defa dönüyor, 2 yıldız koyuyor.
....
i değeri 5 iken k döngüsü 5 defa dönüyor ve son satırda 5 yıldız konuyor.


        private void button1_Click(object sender, EventArgs e)
        {
            string bosluk = "", yildiz = "" ;
            for (int i = 1; i <= 5; i++)
            {
                bosluk = ""; yildiz = "";
                for (int j = 1; j <= 5 - i; j++)
                    bosluk+=" ";
 
                for (int k = 1; k <= i; k++)
                    yildiz+= "*";
 
                listBox1.Items.Add(bosluk + yildiz);
            }
        }
 




Yukarıdaki örnekl gibi birçok örnek düşünebilirsiniz. Örneğin bu piramitin altına ters çevrilmiş şeklini nasıl programlarsınız? Bu problemin çözümünü de size bırakıyorum.



Mutlu Kodlamalar,
Oğuzhan TAŞ
Aralık 2020

Bookmark and Share