Merhaba arkadaşlar!
Bu yazımızda, for ve if döngülerinin kullanımını geliştirmek için kullanılan üçgen örneklerinden, iç içe olan üçgen örneğini inceleyeceğiz. Yani aşağıdaki gibi bir görüntü elde etmek için kodlayacağız. (Kodun tamamı aşağıda bulunuyor, parça parça olan anlatım için yazıyı takip edin)
Yani 2,3,4,6,8 değerleri için aşağıdaki gibi bir görüntü elde etmemiz gerekir.
Örnekteki üçgen değer limit değer 10 girildiğindeki görüntüdür. Nasıl yapabiliriz ona geçelim.
Bu üçgeni yapabilmek için diğer üçgenlerde de olduğu gibi satır/sütun ilişkisini göz önünde bulundurarak çizim yapacağız. Bir for döngümüz olacak ve işlemlerin tamamı onun içinde dönecek. For döngümüz ise girilen üst limit kaç ise o kadar dönecektir.
Öncelikle üçgenimizin ilk sırası özel bir şekilde çizildiğinden döngünün birinci dönüş anında özel çizimi gerçekleştirmemiz gerekiyor.
For döngümüzün içinde ilk olarak aldığımız if şartımızı bu şekilde yapıyoruz:
if (i == 1) { for (j = 1; j <= (2 * a - 1); j++) { if (j == 1 || j == (2 * a - 1)) { Console.Write("*"); } else { Console.Write("-"); } } }
Bu kod parçası ile YALNIZCA üçgenin ilk satırını çizdirmiş olacağız. Üçgenin geri kalan durumunu çizdirmek için bir else if şartı ile kontrol etmemiz gerekiyor. Else if şartı ile SON satıra kadar olan kısıma kadar alacağız yani 2. ve N-1. satıra kadar işlem yapacak yani else if şartımız
else if(i>1 && i<a)
bu yapıda olacaktır.Peki ya bu else if içinde neler yapcağız. Yapmamız gereken özel semboller bulunacak bunlar yan “\” “/” çizgiler “*” (yıldız) ifadeleri ve boşluklar olacak. Bunları çizdirirken sıranın önemli olduğunu unutmayalım.
Üçgenin sol tarafındaki boşluklar ve “\” işaretinin çizim kodu bu şekilde olmalıdır.(Else if şartımızın içinde yazmayı unutmuyoruz.)
for (j = 1; j < i; j++) { Console.Write(" "); } Console.Write("\\");
Çizgilerden sonra ara çizgiler olması gerektiğini unutmuyoruz!(Girilen değerin 4’ten küçük olduğu durumda kontrol)
if (a < 4) { for (j = 1; j <= i - 1; j++) Console.Write(" "); Console.Write("/"); }
Eğer girilen değerimiz 4 ve üzerinde bir değer ise ortada oluşacak “*” ları kontrol ettirmemiz gerekir bunun için aşağıdaki kod parçasını inceleyin.
if (a >= 4) { Console.Write(" "); if (i == 2) { for (j = 1; j <= a * 2 - 7; j++) Console.Write("*"); Console.Write(""); Console.Write(" /"); } else if (i > 2) { if(i<=a-2) Console.Write("*"); if (i <= a - 2) icbosluk = icbosluk - 2; for (j = icbosluk-2; j >= 1; j--) Console.Write(" "); if (i < a - 2) Console.Write("*"); if (i <= a - 2) Console.Write(" /"); else Console.Write("/"); } }
Ve son özel durumumuz SON YILDIZ için gerekli şartımızı oluşturuyoruz.
for (j = 1; j < a; j++) Console.Write(" "); if (i == a && j == i) Console.Write("*"); for (j = 1; j < a; j++) Console.Write(" ");
Ve tabiki en başta açtığımız for döngümüzü bu kodun sonunda kapatmadan önce satır atlama kodunu eklemeyi unutmuyoruz hemen ardından for döngüsünü kapatıyoruz.
Console.Write("\n");
Yani kodun tamamına tek parça olarak bakacak olursak:
int a; int i, x,t,icbosluk; int j; Console.Write("Üst limit belirleyiniz: "); a = Convert.ToInt16(Console.ReadLine()); Console.Write("LİMİT: " + a+"\n\n\n"); icbosluk=a*2-7; for (i = 1; i <= a; i++) { if (i == 1) { for (j = 1; j <= (2 * a - 1); j++) { if (j == 1 || j == (2 * a - 1)) { Console.Write("*"); } else { Console.Write("-"); } } } else if(i>1 && i<a) { #region SOL BOSLUK ve SOL CİZGİ for (j = 1; j < i; j++) { Console.Write(" "); } Console.Write("\\"); #endregion #region ARA BOSLUKLAR if (a < 4) { for (j = 1; j <= i - 1; j++) Console.Write(" "); Console.Write("/"); } #endregion #region ORTA YILDIZLAR if (a >= 4) { Console.Write(" "); if (i == 2) { for (j = 1; j <= a * 2 - 7; j++) Console.Write("*"); Console.Write(""); Console.Write(" /"); } else if (i > 2) { if(i<=a-2) Console.Write("*"); if (i <= a - 2) icbosluk = icbosluk - 2; for (j = icbosluk-2; j >= 1; j--) Console.Write(" "); if (i < a - 2) Console.Write("*"); if (i <= a - 2) Console.Write(" /"); else Console.Write("/"); } } #endregion } #region SON YILDIZ for (j = 1; j < a; j++) Console.Write(" "); if (i == a && j == i) Console.Write("*"); for (j = 1; j < a; j++) Console.Write(" "); #endregion // Console.Write("\n"); } Console.ReadKey();
Teşekkürler!
Kardeşim çok işime yaradı teşekkür ediyorum.ellerine sağlık