CSharp ile Sayıyı Yazıya Çevirebilme

CSharp programlama dili ile basit uygulamarın yanı sıra her zaman kullanabileceğiz profesyonel kodlara örnek vermeye çalışacağım. Aşağıdaki kodlama biraz uzun gibi görünse de temel mantığını anladığınızda oldukça kolay olduğunu göreceksiniz. Tıpkı matematik problemleri gibi, programlamada da bir işi birden fazla yoldan yapabilirsiniz. Belki, aşağıdaki problemi belki daha kısa şekilde kendiniz bir teknik geliştirerek de çözebilirsiniz.

Kısaca programın ne iş yaptığını açıklayacak olursak; Klavyeden girilen 7 haneli (örneğin 1.287.293) bir sayıyı, sözlü şekilde (örneğin bir milyon iki yüz seksen yedi bin iki yüz doksan üç) şeklinde yazmaktadır. Sayıyı giren kişi bazı haneler sıfır da girebilir. Örneğin: 07, 089, 0911, 07873, 089876, 0674123 gibi girebilir, bu durumda baştaki sıfır atılarak sayının sözlü ifadesi yazdırılmaktadır.

Aşağıdaki kodları anlamanız için Değişkenler, Şart Yapıları, Switch -Case Kullanımı, fonksiyon tanımlaması gibi konularda bilgi sahibi olmalısınız. Bu konularda eksikleriniz varsa benim PDF notlarına bakabilirsiniz, ya da başka kaynaklara göz atabilirsiniz. 

C, C++, PHP ve Java programlama dillerine ufak tefek değişikliklerle aşağıdaki programı çevirebilirsiniz. Bu dillerin hepsinde şart yapıları, döngü yapıları hemen hemen aynıdır.

/* Programımız burada başlıyor. Visual Studio içinde konsol (console) modda bir proje açıp içine aşağıdaki kodları kopyalayıp, yapıştırarak programın çalışmasını test edebilirsiniz.*/
 
using System;
 
namespace SayiSozluBul
{
    class Program
    {

/* İlk önce birlerBul fonksiyonu ile sayının birler basamağındaki değerine bakıp, yazdırıyoruz. Burada switch- case yapısı yerine if yapısını da kullabilirsiniz. */
 
            static  string  birlerBul(string birlerBasamagi)
            {
             string deger="";
             switch (birlerBasamagi) {
                    case "0": deger = "sıfır"; break;
                    case "1": deger = "bir"; break;
                    case "2": deger = "iki"; break;
                    case "3": deger = "üç"; break;
                    case "4": deger = "dört"; break;
                    case "5": deger = "beş"; break;
                    case "6": deger = "altı"; break;
                    case "7": deger = "yedi"; break;
                    case "8": deger = "sekiz"; break;
                    case "9": deger = "dokuz"; break;
                     default:return deger;
                }
                return deger;
            }

/* Sonra onlarBul fonksiyonu ile sayının onlar basamağındaki sayıya göre değerini   yazdırıyoruz. Fonksiyonumuz onlarBasamagi isimli değeri alarak 1 ise on, 2 ise yirmi, ..., 9 ise doksan şeklinde sayının metinsel değerini yazdırıyoruz. */
 
            static string onlarBul(string onlarBasamagi)
            {
                string deger="";
                switch (onlarBasamagi)
                {
                    case "1": deger = "on"; break;
                    case "2": deger = "yirmi"; break;
                    case "3": deger = "otuz"; break;
                    case "4": deger = "kırk"; break;
                    case "5": deger = "elli"; break;
                    case "6": deger = "altmış"; break;
                    case "7": deger = "yetmiş"; break;
                    case "8": deger = "seksen"; break;
                    case "9": deger = "doksan"; break;
                }
                return deger;
            }
 
     
/* Şimdi ana fonksiyonumuz olan Main içinde kullanıcıdan sayıyı girmesini istiyoruz. ReadLine() fonksiyonu ile alınan sayı, hep string tipindedir, bunu a değişkenine atıyoruz. Length() fonksiyonu ile a değişkeninin yani girilen sayının uzunluğunu buluyoruz. Uzunluk 1 ise sayı 0 ile 9 arasındadır, 2 ise 10 ile 99 arasındadır. */
 
        static void Main(string[] args)
        {
 
            string a, sayi="", onluk, birlik, yuzluk, binlik, onbinlik, yuzbinlik, milyon;
            int basamaksay = 0;
 
            Console.Write("Sayıyı giriniz :");
            a =  Console.ReadLine();
 
            basamaksay = a.Length;
 
/* Sayımız tek basamaklı ise sadece birlerBul() fonksiyonunu çağırmamız yeterli. */

            if (basamaksay == 1) {
               sayi= birlerBul(a);
            } 
 
/* Sayımız iki basamaklı ise, birler basamağı için birlerBul() fonksiyonunu, onlar hanesi için onlarBul() fonksiyonunu çağırıyoruz. Substring() fonksiyonu kaçınçı haneden başlayıp, kaç hane alınacağını parametre olarak alıyor, 0 ilk karakter oluyor. a.Substring(0,1) ifadesi ilk karakterden başla ve 1 tane al anlamına geliyor. */
 
            if (basamaksay == 2)
            {
              onluk = a.Substring(0,1);
              birlik = a.Substring(1, 1);
 
              sayi= onlarBul(onluk);
 
              if (birlik!="0") 
                    sayi+=birlerBul(birlik);
            }

/* Sayımız üç basamaklı ise birler, onlar ve yüzler basamağını ayrıştırıp, buna göre ilgili fonksiyonları çağırıyoruz.  Bundan sonraki işlemler hep aynı şekilde benzer mantıkla  tekrarlanıyor. 011, 0234 gibi sayının önünde sıfır varsa hesaba katmıyoruz. */
 
            if (basamaksay == 3)
            {   
                yuzluk = a.Substring(0,1);
                onluk = a.Substring(1, 1);
                birlik = a.Substring(2, 1);
 
                if (yuzluk!="1" && yuzluk!="0")
                sayi= birlerBul(yuzluk)+"yüz";
                if (yuzluk == "1")
                 sayi = "yüz";
 
                if (onluk != "0")
                    sayi += onlarBul(onluk);
                if (birlik != "0")
                    sayi += birlerBul(birlik);
            }
            if (basamaksay == 4)
            {
 
                binlik = a.Substring(0, 1);
                yuzluk = a.Substring(1, 1);
                onluk = a.Substring(2, 1);
                birlik = a.Substring(3, 1);
 
                if (binlik != "1")
                    sayi = birlerBul(binlik) + "bin";
                if (binlik == "1")
                    sayi = "bin";
 
                if (yuzluk != "1" && yuzluk != "0")
                    sayi += birlerBul(yuzluk) + "yüz";
                else if (yuzluk == "1")
                    sayi += "yüz";
                else if (yuzluk == "0")
                    sayi += "";
 
                if (onluk != "0")
                    sayi += onlarBul(onluk);
                if (birlik != "0")
                    sayi += birlerBul(birlik);
            }
 
            if (basamaksay == 5)
            {
               
                onbinlik = a.Substring(0, 1);
                binlik = a.Substring(1, 1);
                yuzluk = a.Substring(2, 1);
                onluk = a.Substring(3, 1);
                birlik = a.Substring(4, 1);
 
                if (onbinlik != "0")
                sayi = onlarBul(onbinlik);
 
                if (binlik != "0")
                    sayi += birlerBul(binlik) + "bin";
                else sayi += "bin";
 
 
                if (yuzluk != "1" && yuzluk!="0")
                    sayi += birlerBul(yuzluk) + "yüz";
                else if (yuzluk == "1")
                    sayi += "yüz";
                else if (yuzluk == "0")
                    sayi += "";
 
                if (onluk != "0")
                    sayi += onlarBul(onluk);
                if (birlik != "0")
                    sayi += birlerBul(birlik);
            }
 
            if (basamaksay == 6)
            {
 
                yuzbinlik= a.Substring(0, 1);
                onbinlik = a.Substring(1, 1);
                binlik = a.Substring(2, 1);
                yuzluk = a.Substring(3, 1);
                onluk = a.Substring(4, 1);
                birlik = a.Substring(5, 1);
 
                if (yuzbinlik != "0" && yuzbinlik != "1")
                    sayi = birlerBul(yuzbinlik) + "yüz";
                else if (yuzbinlik == "1")
                    sayi = "yüz";
                else sayi += "";
               
 
                if (onbinlik != "0")
                    sayi += onlarBul(onbinlik);
                
 
                if (binlik != "0")
                    sayi += birlerBul(binlik) + "bin";
                else sayi += "bin";
 
 
                if (yuzluk != "1" && yuzluk != "0")
                    sayi += birlerBul(yuzluk) + "yüz";
                else if (yuzluk == "1")
                    sayi += "yüz";
                else if (yuzluk == "0")
                    sayi += "";
 
                if (onluk != "0")
                    sayi += onlarBul(onluk);
                if (birlik != "0")
                    sayi += birlerBul(birlik);
            }

/* Sayı 7 haneli ise bu kısım işletiliyor, 7 haneden fazla sayılar için siz aynı mantıkla yazabilirsiniz.*/
 
            if (basamaksay == 7)
            {
 
                milyon = a.Substring(0, 1);
                yuzbinlik = a.Substring(1, 1);
                onbinlik = a.Substring(2, 1);
                binlik = a.Substring(3, 1);
                yuzluk = a.Substring(4, 1);
                onluk = a.Substring(5, 1);
                birlik = a.Substring(6, 1);
 
                if (milyon != "0")
                    sayi = birlerBul(milyon) + "milyon";
                else sayi = "";
 
                if (yuzbinlik != "0")
                    sayi += birlerBul(yuzbinlik) + "yüz";
                else sayi += "";
 
 
                if (onbinlik != "0")
                    sayi += onlarBul(onbinlik);
 
 
                if (binlik != "0")
                    sayi += birlerBul(binlik) + "bin";
                else sayi += "bin";
 
 
                if (yuzluk != "1" && yuzluk != "0")
                    sayi += birlerBul(yuzluk) + "yüz";
                else if (yuzluk == "1")
                    sayi += "yüz";
                else if (yuzluk == "0")
                    sayi += "";
 
                if (onluk != "0")
                    sayi += onlarBul(onluk);
                if (birlik != "0")
                    sayi += birlerBul(birlik);
            }
      
/* Sayımızı ekrana metinsel olarak bu kısımda yazdırıyoruz. */
         Console.WriteLine(sayi);      
 
        }
    }
}

/* Kodlarımız burada bitiyor, Csharp ile yapılmış bu örneği daha da geliştirebilirsiniz. Unutmayın her zaman bir problemin daha kısa çözümü vardır. Bol bol kod incelemeyi unutmayın. */

Oğuzhan Taş - 2014
Tüm kodlar denenmiştir, bir sorunla karşılaşırsanız lütfen iletişim bölümünden yazınız.
Bookmark and Share