DEV Community

Enisksz
Enisksz

Posted on

C'de Yıldızlar İle Şekil Çizme

Yıldız ile üçgen çizimi

int main()
{
    int i,j;

    for(i=0;i<6;i++)
    {
        for(j=0;j<i;j++)
        {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
Enter fullscreen mode Exit fullscreen mode

İlk önce integer i ve j değeri tanımladık ki bunları döngüde kullanalım. i ifademiz 0'dan başlayıp 6'ya kadar gidecek fakat 6 dahil olmayacak. i'nin aldığı her değerde içindeki for döngüsüde i nin değeri kadar dönecek. Bunu nerden anlıyoruz diyorsanız eğer, j<i dediğimiz için i hangi değerdeyse j de i kadar yıldız basar. Mesela i=2 olduğunda en dıştaki for 0,1,2 değerlerine kadar gelmiş olduğu için 3 kez çalışır ve ilk i değeri 0 olduğundan ekrana yıldız basılmaz ikinci i değeri 1 olduğu için ekrana 1 yıldız bastırılır ve son olarak i değeri 2 olduğu için ekrana 2 tane yıldız bastırılır.

*
**
***
****
*****
Enter fullscreen mode Exit fullscreen mode

Burada oluşan üçgenin tersini oluşturmayı istersek eğer işler biraz değişiyor.

int main()
{
    int i,j;

    for(i=6;i>=0;i--)
    {
        for(j=1;j<=i;j++)
        {
            printf("*");
        }
        printf("\n");
    }

    return 0;
}
Enter fullscreen mode Exit fullscreen mode

Tekrardan i ve j değişkenlerini tanımlıyoruz. İlk for döngümüzdeki mantık şudur; i'yi 6 ya eşitledik ki bu istediğiniz bir sayı olabilir. Ona göre de üçgeniniz büyüyecektir. Sonra i>=0 yaptık ki bu i sıfır ve sıfırdan büyük oldukça döngü devam etsin diyor bize. Eğer ki i değeri sıfırdan küçük olursa döngü duracaktır. i-- ise i değerinin bir bir azalmasını ifade ediyor.

Temel mantığımız, dışta olan döngümüz 6 kez kendini tekrar edecek ve içerideki döngümüz ise kendini i'nin değeri kadar tekrar edecek. Örneğin, i=6 olduğunda içerisinde olan for döngüsü 6 kez ekrana * bastıracak. Oluşan şeklimiz ise aşağıda görüldüğü gibidir.

******
*****
****
***
**
*
Enter fullscreen mode Exit fullscreen mode

Şimdi ise sol taraftan boşluklar vererek bir üçgen oluşturalım. Bu kısımda farklı olarak kullanıcıdan bir sayı girmesini isteyeceğiz ve döngümüzde bunu kullanacağız.

int main()
{
    int i,j,n;

    printf("n: ");
    scanf("%d",&n);

    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n-i;j++)// n-i, 5-1'den 4 tane boşluk koy demek
        {
            printf(" ");
        }
        for(j=1;j<=i;j++)//Burada boşluktan sonra bir tane yıldız koyar
        {
            printf("*");
        }
        printf("\n");
    }

    return 0;
}
Enter fullscreen mode Exit fullscreen mode

İlk olarak printf("n: "); yazarak kullanıcıdan bir n değeri girmesini istiyoruz. Sonrasında scanf("%d",&n); yazarak aldığımız n değerini hafızaya kaydediyoruz. Bu kısmı anladıktan sonra dış kısımda olan for döngümüzü inceleyelim. i=1 ile başlangıç değerimizi belirliyoruz. Sonrasında i<=n ile bitiş değerimizi belirliyoruz ve son olarak i++ ile ise i değerini bir bir arttırıyoruz.

iç kısımda olan ilk for döngüsünde başlangıç değerimiz 1'dir. j<=n-i dediğimiz kısım bizim bitiş değerimiz ama aslında bize diyor ki n-i yani kullanıcı n yerine 5 değerini girerse ve bizimde başlangıç değerimiz 1 olduğu için 5-1'den 4 tane boşluk koy diyor aslında.

İkinci for döngümüz ise bir önceki for döngüsünün koyduğu boşlukların yanına yıldız bastırır. Mesela 4 tane boşluk koyduk ilk döngüde, ikinci döngüde ise yanına 1 tane yıldız koyacak. Sonra ilk döngü 3 boşluk koyacak, ikinci döngü ise 2 tane yıldız koyacak. Bu böyle 0 olana kadar devam edecek. Sonuç olarak çıktımız şu şekilde olacak;

    *
   **
  ***
 ****
*****
Enter fullscreen mode Exit fullscreen mode

Son olarak tam bir üçgen çizmeyi öğrenip bu postu burada bitireceğiz. Bir önceki yaptığımız for döngüsünden çok bir farkı yok aslında.

int main()
{
     int i,j,n;
     printf("n: ");
     scanf("%d",&n);

        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n-i;j++)
            {
                printf(" ");
            }
            for(j=1;j<=2*i-1;j++)
            {
                printf("*");
            }
            printf("\n");
        }

    return 0;
}
Enter fullscreen mode Exit fullscreen mode

Burada diğer kısımlardan farklı olarak for döngüsü içindeki ikinci for döngüsünü görüyoruz. Üstünde durup 5 dakika anlamaya çalıştığınızda mantığı çok basittir aslında. Bize demek istiyor ki, i=1olduğunda j<=2*i-1 in değeri 2*1-1'den 1 oluyor ve j<=1 oluyor aslında bu da bize bir kere ekrana yıldız bastır demektir.
Çıktısı ise şu şekildedir;

    *
   ***
  *****
 *******
*********
Enter fullscreen mode Exit fullscreen mode

Top comments (0)