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;
}
İ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.
*
**
***
****
*****
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.
İ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;
*
**
***
****
*****
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;
}
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=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;
*
***
*****
*******
*********
Top comments (0)