C# da Sayıları Yazıya Çevirme Örneği
Bu yazıda bir sayının yazıya nasıl çevirebileceğimiz hakkında bir yol göstereceğim, dil olarak C# kullanılacaktır. Öncelikle belirteyim ki programlama ve C# konusunda çok yeniyim. Hemen hemen tüm bildiklerimi bu siteye borçluyum.
Aşağıdaki kodda bulunan Oku fonksiyonu kendisine string olarak gönderilen tam sayıyı yazıya çevirmektedir. Kodun çalışma mantığı şöyledir.
oku fonksiyonuna gönderilen string başına “0” eklemek suretiyle önce 15 haneye tamamlanır, sonra yeni string 3 erli kümeler halinde 5 eşit parçaya bölünür ve her bir üçlü küme tek tek
rakam dizisine yüklenir. Böylece 5 elemanlı rakam dizisinin her bir elemanında 3 karakterli bir string yüklü olur.
1.Aşama
sayımız 32313234 olsun. ilk olarak sayımızın hane sayısını başına 0 eklemek sureti ile 15 e çıkarırız.
Böylece yeni stringimiz 000000032313234 şeklini alır.
2.Aşama
Stringimiz 3 erli kümeler halinde 5 eşit parçaya bölünür.
1. küme : 000
2. küme : 000
3. küme : 032
4. küme : 313
5. küme : 234
3.aşama
her bir küme 5 elemanlı rakam isimli araya yüklenir ve sonuçta
rakam[0] = “000”
rakam[5] = “234”
olur
rakam[5][0]=”2″ 5. kümenin yüzler basamağı;
rakam[5][1]= “3” 5. kümenin onlar basamağı;
rakam[5][2]= “4” 5. kümenin birler basamağı;
olur.
4.aşama
10 elemanlı yüzler, onlar, birler string dizileri tanımlanır ve i çleri doldurulur.
örn:
yuzler.SetValue(“ikiyuz”,2);
onlar.SetValue(“otuz”,3);
birler.SetValue(“dört”,4);
yani yuzler[2]+onlar[3]+birler[4] = ikiyüzotuzdört olur.
int x =Convert.ToInt16(rakam[5][0].ToString()); yüzler
int y =Convert.ToInt16(rakam[5][1].ToString()); onlar
int z =Convert.ToInt16(rakam[5][2].ToString()); birler
yuzler[x]+onlar[y]+birler[z] = ikiyüzotuzdört
bir döngü ile her bir kümeye bu işlemi uygularsanız, 1 ve ikinci kümlerin bütün elemanları sıfır olduğu için sonuçta
otuzdört
üçyüzonuç
ikiyüzotuzdört
ü elde edersiniz
5.Aşama
hane isimli 5 li array tanımlanır ve elemanları trilyon, milyar, milyon, bin ve sonuncusu da boş olacak şekilde ayarlanır. aynı döngü içerisinde her bir kümenin sonuna eklenir
string sonuc = “”;
for(int i = 0 ; i 15)
return “Hata girilen değerin uzunluğu en fazla 15 olmalı”;
// uzunluk 15 karakterden fazla olmamalı. si
try
{
long k = Convert.ToInt64(sayi);
}
catch(Exception ex)
{
return ex.Message.ToString();
}
sayi = “000000000000000”+sayi;
sayi = sayi.Substring(uzunluk,15);
rakam.SetValue(sayi.Substring(0,3),0);
rakam.SetValue(sayi.Substring(3,3),1);
rakam.SetValue(sayi.Substring(6,3),2);
rakam.SetValue(sayi.Substring(9,3),3);
rakam.SetValue(sayi.Substring(12,3),4);
if(rakam[0].ToString()!= “000”)
hane.SetValue(“trilyon “,0);
if(rakam[1].ToString()!= “000”)
hane.SetValue(“milyar “,1);
if(rakam[2].ToString()!= “000”)
hane.SetValue(“milyon “,2);
if(rakam[3].ToString()!= “000”)
hane.SetValue(“bin “,3);
string sonuc = “”;
for(int i = 0 ; i < 5;i++)
{
sonuc = sonuc + yuzler[Convert.ToInt16(rakam[i][0].ToString())]+
birsorunu(onlar[Convert.ToInt16(rakam[i][1].ToString())]+birler[Convert.ToInt16(rakam[i][2].ToString())]+hane[i]);
}
return sonuc;
}
privatestring birsorunu (string sorun)
{
string cozum = "";
if (sorun == "birbin ")
cozum = "bin ";
else
cozum = sorun;
return cozum;
}
}
}
