Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

rakamları harf olarak yazdırmak


Öne çıkan mesajlar

Mesaj tarihi:
textboxa girileni butona tıklayınca labelda harf olarak yazdırmayı yaptım bi şekilde ama saçmalıyor :)
zaten yeniyim dalga geçmeyin
her neyse saçmaladığı kısım genelde 36 milyon yazdığımda 30 milyon 6 milyon gibi sonuçlar çıkartıyor.
yanlış bir yöntem ile yapmışım muhtemelen gereksiz uzatmışım vs.
bana doğru yöntemi yazacak bir babayiğit var mı acaba ?

benim kodlarım şöyle
çok uzamaması için almadım her yeri


int sayi, birler, onlar, yuzler;
sayi = Convert.ToInt32(txt1.Text);


if (sayi == 0) lbl1.Text = "Sıfır";

birler = sayi % 10;
onlar = (sayi / 10) % 10;
yuzler = (sayi / 100) % 10;





string[] birlik = { "", "Bir", "İki", "Üç", "Dört", "Beş", "Altı", "Yedi", "Sekiz", "Dokuz" };
string[] onluk = { "", "On", "Yirmi", "Otuz", "Kırk", "Elli", "Altmış", "Yetmiş", "Seksen", "Doksan" };
string[] yuzluk = { "", "Yüz", "İki Yüz", "Üç Yüz", "Dört Yüz", "Beş Yüz", "Altı Yüz", "Yedi Yüz", "Sekiz Yüz", "Dokuz Yüz" };


lbl1.Text = yuzluk[yuzler] + " " + onluk[onlar] + " " + birlik[birler];

Mesaj tarihi:
şu arraylar yulzuk te bitiyomu yoksa devam ediyo mu binlik yüzbinlik vs diye?

bu arada logaritma kullanmak daha ii olmazmıydı?
du bakim bi dakka

bu arada türkçemi yazdırıyoruz? işler garipleşiyor tr de çünkü
Mesaj tarihi:
log kullanak türkçe yazdırak

178621 misal
türkçe işkilli dil, ona göre ayarlamak lazım.

yani konuşurken aslında biz kafada ayırıp birleştirioz ya, öle yaapalım

yüz yetmiş sekiz "bin" altı yüz yirmi bir

fak
bi gireyim dedimde mesai bitiyor. ama basitce
log10 kullanıp 6 basamaklığını oldugunu bulup
sonra her 3 basamakta bir ( bin bin ayırıyoruz biz çünkü ) okutucan
yani 178621 dimi
178621 - 100000 yapıcan bi 78621 kalıcak. /1000 e bölüp inte cast edicen 78 kalıcak
onuda 70 ve 8 diye ayırıcan
sora bi arrayin olucak, buna yüz,yetmiş,sekiz i atayacan burdan döndürüp.

sora 3 basamakta bir ayrdık ya yanına bin koyucan
178bin olcak bu meret.
621 de aynı şekilde ama bin olmıcak

hmmm
aslıdna evet lan bit 3 lü 3lü yapıyoruz, yani 3 basamaklı bişeyi okutabilirsen, ondan sonraki her 3 basamaka sadece bin,yüzbin,milyon falan ekleterek basitçe devam edebilirsin.
Mesaj tarihi:
burdan şeyedebilirsin

function yaziylasayi($sayi) {
$o = array(
'birlik' => array('bir', 'iki', 'üç', 'dört', 'beş', 'altı', 'yedi', 'sekiz', 'dokuz'),
'onluk' => array('on', 'yirmi', 'otuz', 'kırk', 'elli', 'altmış', 'yetmiş', 'seksen', 'doksan'),
'basamak' => array('yüz', 'bin', 'milyon', 'milyar', 'trilyon', 'katrilyon')
);

// Sayıyı basamaklarına ayırıyoruz
$basamak = array_reverse(str_split(implode('', array_reverse(str_split($sayi))), 3));

// Basamak sayısını belirliyoruz
$basamak_sayisi = count($basamak);

// Her basamak için:
for ($i=0; $i < $basamak_sayisi; ++$i)
{
// Sayıyı basamaklarına ayırdığımızda basamaklar tersine döndüğü için burada ufak bir işlem ile basamakları düzeltiyoruz
$basamak[$i] = implode(array_reverse(str_split($basamak[$i])));

// Eğer basamak 4, 8, 15, 16, 23, 42 gibi 1 veya 2 rakamlıysa başına 3 rakama tamamlayacak şekilde "0" ekliyoruz ki foreach döngüsünde problem olmasın
if (strlen($basamak[$i]) == 1)
$basamak[$i] = '00' . $basamak[$i];
elseif (strlen($basamak[$i]) == 2)
$basamak[$i] = '0' . $basamak[$i];
}

$yenisayi = array();

// Her basamak için: ($yenisayi değişkenine)
foreach ($basamak as $k => $b)
{
// basamağın ilk rakamı 0'dan büyük ise
if ($b[0] > 0)
// değişkene rakamın harfle yazılışı ve "yüz" ekliyoruz
$yenisayi[] = ($b[0] > 1 ? $o['birlik'][$b[0]-1] . ' ' : '') . $o['basamak'][0];

// basamağın 2. rakamı 0'dan büyük ise
if ($b[1] > 0)
// değişkene rakamın harfle yazılışını ekliyoruz
$yenisayi[] = $o['onluk'][$b[1]-1];

// basamağın 3. rakamı 0'dan büyük ise
if ($b[2] > 0)
// değişkene rakamın harfle yazılışını ekliyoruz
$yenisayi[] = $o['birlik'][$b[2]-1];

// değişkene basamağın ismini (bin, milyon, milyar) ekliyoruz
if ($basamak_sayisi > 1)
$yenisayi[] = $o['basamak'][$basamak_sayisi-1];

// Basamak sayısını azaltıyoruz ki her basamağın sonuna ilkinde ne yazıyorsa o yazılmasın
--$basamak_sayisi;
}

return implode(' ', $yenisayi);
}
Mesaj tarihi:
ben kısalttım milyon kısımlarını koymadım buraya
var yoksa hepsi aynı şekilde ya.
bakıp deneyeceğim sizin yöntemlerinizi birazdan. şu an başka bir şeyle uğraştığımdan bakamadım kusura bakmayın.
teşekkürler ama cevaplarınız için.
Mesaj tarihi:
çözdün mü sorunu bilmiyorum da

sayıyı al
sondan başlayarak 3erli grupla
atıyorum
32 212 432
her bir 3lü grupta yanına yazılan değeri arttırt

432
212 bin
32 milyon şeklinde halledersin
×
×
  • Yeni Oluştur...