C#nedir?com
 
YAZAR HAKKINDA
Tolga Güler
Tolga Güler
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
6 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  C# / VC#/.NET Tolga Güler
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 25.9.2003
Okunma Sayısı : 52805
Yorum Sayısı : 4     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 12.4.2021
Turhal Temizer
Mac OS/X Removing CUDA 12.4.2021
Burak Selim Şenyurt
Tie Fighter Değil, Project Tye! 12.4.2021
Burak Selim Şenyurt
Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir? 12.4.2021
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Sayıları Yazıya Çevirme Örneği
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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 < 5;i++)

{
    sonuc = sonuc +

    yuzler[Convert.ToInt16(rakam[i][0].ToString())]+

    onlar[Convert.ToInt16(rakam[i][1].ToString())]+

    birler[Convert.ToInt16(rakam[i][2].ToString())]+

    hane[i];

}

Burada ayarlanması gereken durum eğer bir kümenin bütün elemanları sıfırsa (yukarıdaki gibi) hanenin gözükmemesi gerekir. Yani

000 = yuzler[0]+onlar[0]+birler[0]+hane[0] dersek sonuç trilyon olur bu durumda

 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);

yani rakam[0] (trilyon kümesi) "000" değilse hane[0] = "trilyon" olsun demeliyiz.

Yanlız bir sorun daha var. eğer sayı 1000 ise fonksiyon  bize haklı olarak "birbin"  i döndürür. Bir milyar var, Bir Milyon var ama bir bin ve bir yüz yok. Ben bu sorunu BirSorunu isimli fonksiyonla hallettim.

Aşağıdaki kodu inceleyebilirsiniz.



using System;

namespace numbereader

{
     public class SayiOkuma
       {

             privatestring[ ] yuzler =newstring[10];
             private string[ ] onlar =new string[10];
             private string[ ] birler =new string[10];
             private string[ ] hane = new string[5];
             private string[ ] rakam =newstring[5];
             // arrayları tanımlıyoruz

public SayiOkuma()

{

// içlerini dolduruyoruz

yuzler.SetValue("dokuzyüz",9);
yuzler.SetValue("sekizyüz",8);
yuzler.SetValue("yediyüz",7);
yuzler.SetValue("altıyüz",6);
yuzler.SetValue("beşyüz",5);
yuzler.SetValue("dörtyüz",4);
yuzler.SetValue("üçyüz",3);
yuzler.SetValue("ikiyüz",2);
yuzler.SetValue("yüz",1);
yuzler.SetValue("",0);

onlar.SetValue("doksan",9);
onlar.SetValue("seksen",8);
onlar.SetValue("yetmiş",7);
onlar.SetValue("altmış",6);
onlar.SetValue("elli",5);
onlar.SetValue("kırk",4);
onlar.SetValue("otuz",3);
onlar.SetValue("yirmi",2);
onlar.SetValue("on",1);
onlar.SetValue("",0);

birler.SetValue("dokuz",9);
birler.SetValue("sekiz",8);
birler.SetValue("yedi",7);
birler.SetValue("altı",6);
birler.SetValue("beş",5);
birler.SetValue("dört",4);
birler.SetValue("üç",3);
birler.SetValue("iki",2);
birler.SetValue("bir",1);
birler.SetValue("",0);

hane.SetValue("",0);
hane.SetValue("",1);
hane.SetValue("",2);
hane.SetValue("",3);
hane.SetValue("",4);
/*  ilk olarak bu arrayın elemanlarını boş olarak ayarlıyoruz eğer küme elemanları
000 değilse trilyon,milyar,milyon bin değerleri ile dolduruyoruz
*/

}

public string oku(string sayi)

{

int uzunluk = sayi.Length;
if(uzunluk > 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;

}

}

}

Herkese kolay gelsin. Bu arada dileyene DLL i gönderebilirim. İyi çalışmalar.

Makale:
Sayıları Yazıya Çevirme Örneği C#, Visual C# ve .NET Tolga Güler
  • Yazılan Yorumlar
  • Yorum Yaz
MAR
19
2011
Ben C# a yeni başladım ve yukardaki kodlardan pek birşey anlamadım, 1 ile 9999 arasında ki sayıların yazı olarak karşılıklarını yazdırmam gerekiyor, yardımcı olabilir misiniz? Şimdiden teşekkür ederim..
KAS
22
2010
Elinize sağlık bunun console değilde form uygulaması elinizde mevcut mu varsa yollayabilrimisiniz?
ARA
9
2009
Güzel bir çalışma olmuş. Teşekkür ederim. Bana bunu consoleda ufak bir örnekle gönderirsen cok sevinirim. Girilen sayıyı yazı olarak okutarak. mail : cankana@yahoo.com Başarılı Çalışmalarının devamını dilerim
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor