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


この整数は、完全な整数ではありません. 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
*
**
***
****
*****


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


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.

******
*****
****
***
**
*


Ş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;
}


İ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.

döngüsününkoyduğuboşluklarınyanınayıldızbastırırのdöngümüzisebiröncekiのİkinci. Mesela 4 tane boşluk koyduk ilk döngüde, ikinci döngüde ise yanına 1 tane yıldız koyacak.ソンライ イルク ドンギュ 3 ボシュルク コヤチャク、イキンチ ドンギュ イセ 2 タネ ユルドゥズ コヤチャク. Bu böyle 0 olana kadar devam edecek. Sonuç olarak çıktımız şu şekilde olacak;

    *
   **
  ***
 ****
*****


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


döngüsünügörüyoruzのdöngüsüiçindekiikinciのBuradadiğerkısımlardanfarklıolarak.続きを読む 5 dakika anlamaya çalıştığınızda mantığı çok basittir aslında. Bize demek istiyor ki, i=1 olduğ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;

    *
   ***
  *****
 *******
*********