Özür diliyorum sorunu eksik okumuşum bu program kare yapmıyor ama hemen istediğin programı yazıyorum, biraz bekleteceğim.
Ek Olarak: Mesajınızı geç gördüğüm ve yanlış okuduğum için programı c yerine işini tam olarak görecek c#dilinde hazırladım. Umarım öğrenmenize yardımcı olur. Açıklama satırlarını okursanız mantığı anlayacağınızı umuyorum. Yinede soruların olursa yanıtlamaya çalışırım. Tekrar başarılar.
Program görseli :
Ek Olarak: Mesajınızı geç gördüğüm ve yanlış okuduğum için programı c yerine işini tam olarak görecek c#dilinde hazırladım. Umarım öğrenmenize yardımcı olur. Açıklama satırlarını okursanız mantığı anlayacağınızı umuyorum. Yinede soruların olursa yanıtlamaya çalışırım. Tekrar başarılar.
Program görseli :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Write("Yildiz edetini girin : ");
String yildiz_adeti = Console.ReadLine(); // String olarak kullanıcıdan yıldiz adeti alındı.
int int_yildiz_adeti = Int32.Parse(yildiz_adeti); // String ifade integer ifadeye dönüştürüldü.
if (int_yildiz_adeti % 4 != 0) // Sayının 4'e modunu aldık ve kare yapılabilirliğini kontrol ettik.
{
Console.WriteLine("Bu degerlerden bir kare yapilamaz..");
}
else
{
int en_ust_satirdaki_yildiz_sayisi = int_yildiz_adeti/4;
int ust_satir_sayaci;
int alt_bolumde_atilacak_bosluk_sayisi = 1;
for (ust_satir_sayaci = 1; ust_satir_sayaci <= en_ust_satirdaki_yildiz_sayisi; ust_satir_sayaci++)
{
Console.Write("*");
alt_bolumde_atilacak_bosluk_sayisi++;
}
alt_bolumde_atilacak_bosluk_sayisi -= 2; // alt bölümde atılacak boşluk sayısı üst satırdaki en baş ve en son * ların çıkarılması ile belirlendi.
String string_olarak_boslugun_yazimi = " ";
String string_olarak_yildizin_yazimi = "*";
int bosluk_sayaci;
String yeni_string_olarak_boslugun_yazimi = ""; // başta boş
String yeni_string_olarak_yildizin_yazimi = "";
for(bosluk_sayaci=1; bosluk_sayaci < alt_bolumde_atilacak_bosluk_sayisi; bosluk_sayaci++){
yeni_string_olarak_boslugun_yazimi = yeni_string_olarak_boslugun_yazimi+string_olarak_boslugun_yazimi;
yeni_string_olarak_yildizin_yazimi = yeni_string_olarak_yildizin_yazimi+string_olarak_yildizin_yazimi;
}
Console.WriteLine("");
for (ust_satir_sayaci = 1; ust_satir_sayaci < en_ust_satirdaki_yildiz_sayisi; ust_satir_sayaci++)
{
if (ust_satir_sayaci == alt_bolumde_atilacak_bosluk_sayisi) // Son satırdaysa.
{
Console.WriteLine("*" + yeni_string_olarak_yildizin_yazimi + "*");
}
else
{
Console.WriteLine("*" + yeni_string_olarak_boslugun_yazimi + "*"); // Ara satırdaysa
}
}
}
Console.ReadLine(); // konsolu ekranda tutmaya yarar.
}
}
}
Teşekkür ederim, uğraşınız için ama siz yıldız adetini girdiriyorsunuz, ben kenar uzunluğunu girdirilmesini istiyorum; Örneğin 6 girecem
******
* *
* *
* *
* *
******
Yukardaki gibi şekil olacak. Tabii kare olmuyor burda (siz bunun karesini düşünün)