Merhaba arkadaşlar, bu yazımda sizlere C# ile Tutarı Yazıya Çevirme Örneği konusundan bahsedeceğim.
Bu yazıda, C# programlama dilini kullanarak bir tutarı Türk lirasına ve kuruşuna uygun şekilde yazıya çevirmeyi öğreneceğiz. Bu tür bir ihtiyacınız olduğunda, örneğimizi kullanarak bu dönüşümü kolaylıkla gerçekleştirebilirsiniz.
Hemen örnek kodumuzu yazma işlemini gerçekleştiriyoruz.
string[] birler = { "", "Bir", "İki", "Üç", "Dört", "Beş", "Altı", "Yedi", "Sekiz", "Dokuz" };
string[] onlar = { "", "On", "Yirmi", "Otuz", "Kırk", "Elli", "Altmış", "Yetmiş", "Seksen", "Doksan" };
string[] gruplar = { "", "Bin", "Milyon", "Milyar", "Trilyon", "Katrilyon" };
string TutariYaziyaCevir(long sayi)
{
if (sayi == 0)
return "Sıfır";
string cevirilen = "";
int grupIndeksi = 0;
while (sayi > 0)
{
int grupDegeri = (int)(sayi % 1000);
if (grupDegeri > 0)
{
string grupDegeriYaziyla = GrupDegeriniCevir(grupDegeri, grupIndeksi == 1);
cevirilen = grupDegeriYaziyla + " " + gruplar[grupIndeksi] + " " + cevirilen;
}
sayi /= 1000;
grupIndeksi++;
}
return cevirilen.Trim();
}
string GrupDegeriniCevir(int sayi, bool binlikGrubu)
{
int yuzler = sayi / 100;
int onlarBasamagi = (sayi % 100) / 10;
int birlerBasamagi = sayi % 10;
string yaziyla = "";
if (yuzler > 0)
{
if (yuzler == 1)
yaziyla += "Yüz ";
else
yaziyla += birler[yuzler] + " Yüz ";
}
if (onlarBasamagi > 0)
yaziyla += onlar[onlarBasamagi] + " ";
if (birlerBasamagi > 0)
{
if (binlikGrubu && birlerBasamagi == 1)
yaziyla += "";
else
yaziyla += birler[birlerBasamagi] + " ";
}
return yaziyla;
}
string KurusuCevir(int kurus)
{
string kurusYaziyla = TutariYaziyaCevir(kurus);
if (kurus == 0)
return "";
if (kurusYaziyla == "Bir")
kurusYaziyla = "Bir Kuruş";
else
kurusYaziyla += " Kuruş";
return kurusYaziyla;
}
Console.Write("Bir tutar girin: ");
decimal tutar = Convert.ToDecimal(Console.ReadLine());
long lira = (long)Math.Floor(tutar);
int kurus = (int)Math.Floor((tutar - lira) * 100);
string liraYaziyla = TutariYaziyaCevir(lira);
string kurusYaziyla = KurusuCevir(kurus);
string tutarYaziyla = liraYaziyla + " Türk Lirası " + kurusYaziyla;
Console.WriteLine("Yazıyla: " + tutarYaziyla);
Console.ReadLine();
Kod Açıklaması:
- İlk olarak,
birler
,onlar
vegruplar
adlı üç adet dizi oluşturacağız. Bu diziler, Türkçe yazıya çevirme işleminde kullanacağımız sayısal değerleri ve grup isimlerini içerecek. TutariYaziyaCevir
adında bir metot tanımlayacağız. Bu metot, verilen bir sayıyı Türk lirasına çevirerek yazıya dönüştürecek. İlk olarak, sayının 0 olup olmadığını kontrol edeceğiz. Eğer 0 ise “Sıfır” olarak geri döneceğiz.- Daha sonra, sayıyı 1000’lik gruplara bölerek her bir grup için ayrı ayrı çevirme işlemi gerçekleştireceğiz. Bu işlemi, bir
for
döngüsü kullanarak yapacağız. GrupDegeriniCevir
adında bir başka metot tanımlayacağız. Bu metot, verilen bir sayıyı Türkçe yazıya çevirerek geri dönecek. İlk olarak, sayıyı yüzler, onlar ve birler basamaklarına ayıracağız. Ardından, ilgili dizilerden değerleri alarak sayıyı Türkçe yazıya dönüştüreceğiz.KurusuCevir
adında bir metot daha tanımlayacağız. Bu metot, verilen bir kuruş değerini Türkçe yazıya çevirecek. Eğer kuruş değeri 0 ise “Sıfır Kuruş” olarak geri döneceğiz.Main
metodu içinde kullanıcıdan bir tutar girmesini isteyip, bu tutarı alacak ve lira ve kuruş değerlerine ayıracak.- Daha sonra,
TutariYaziyaCevir
veKurusuCevir
metotlarını kullanarak lira ve kuruş değerlerini Türkçe yazıya çevireceğiz. - Son olarak, elde edilen yazıları birleştirerek sonucu ekrana yazdıracağız.
Bu yazıda, C# ile tutarı yazıya çevirme işlemini sağlamış olduk.
Umarım faydalı olur.
Bir sonraki yazıda görüşmek üzere…
Yaraya merhem oldunuz. Çok teşekkürler. Uğraşasım hiç yoktu, ChatGPT’ye yaptırıyordum. ChatGPT 100 liraya “Bir Yüz Lira”, 1000 liraya ise “Bir Bin Lira” diye çıktı veriyordu. Formda yazdığım mail adresim gözükmezse memnun olurum. Teşekkürler.