Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Sayıyı yazıya çevirme

Konu, 'Javascript' kısmında merhum_dogan tarafından paylaşıldı.

  1. merhum_dogan

    merhum_dogan Yeni Üye

    Kayıt:
    5 Mayıs 2008
    Mesajlar:
    2
    Beğenilen Mesajlar:
    0
    Merhaba arkadaslar. Okulda hoca cok zor bi odev verdi, ne kadar ugrastiysam yapamadim. Hocanin istedigi javascripte textboxtaki bir numarayi yaziya cevirmek. ornegin bir kutunun icinde 15050 yaziyorsa ben diger kutuga bunu harf seklinde ki karsiligini yazmam gerekiyor yani on bes bin elli. bunu nasil yapabilirim..
     
  2. Sniper

    Sniper Daimi Üye

    Kayıt:
    21 Haziran 2004
    Mesajlar:
    2,732
    Beğenilen Mesajlar:
    0
    Meslek:
    Webmaster
    Şehir:
    İstanbul
    "Sayıyı yazıya çevirme" diye bi arama işlemi gerçekleştirirsen bu işi daha önce yapmış zeki arkadaşların cevaplarını bulabilirsin...
     
  3. cemal

    cemal Üye

    Kayıt:
    20 Ekim 2007
    Mesajlar:
    249
    Beğenilen Mesajlar:
    0
    [1,"bir","on","yüz","bin","buraya ekle yeni basamak","bir tane daha"],
    Kod:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
      <meta content="text/html; charset=UTF-8"
     http-equiv="content-type">
      <title></title>
    <script type="text/javascript">
    function cevir(){
    var el=document.getElementById('inp1');
    var el2=document.getElementById('inp2');
    if(el.value.length==1 && el.value==0) return el2.value="sıfır";
    var basamak=[
    [1,"bir","on","yüz","bin"],
    [2,"iki","yirmi","ikiyüz","ikibin"],
    [3,"üç","otuz","üçyüz","üçbin"],
    [4,"dört","kırk","dörtyüz","dörtbin"],
    [5,"beş","elli","beşyüz","beşbin"],
    [6,"altı","altmış","altıyüz","altıbin"],
    [7,"yedi","yetmiş","yediyüz","yedibin"],
    [8,"sekiz","seksen","sekizyüz","sekizbin"],
    [9,"dokuz","doksan","dokuzyüz","dokuzbin"]
    ];
    
    var arr=[];
    for(var n=0, b=el.value.length; n<el.value.length; n++,b--) {
    for(var i=0; i<9; i++) {
    if(el.value.charAt(n)==basamak[i][0]) arr[arr.length]=basamak[i][b];
    }
    }
    el2.value=arr.join(" ");
    }
    </script>
    </head>
    <body>
    <input type="text" id="inp1" value="">
    <input type="button"  value="yazıya çevir" onclick="cevir()" >
    <input type="text" id="inp2" >
    </body>
    </html>
      
     
  4. cemal

    cemal Üye

    Kayıt:
    20 Ekim 2007
    Mesajlar:
    249
    Beğenilen Mesajlar:
    0
    Düzeltme yaptım.
    Kod:
      
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
      <meta content="text/html; charset=UTF-8"
     http-equiv="content-type">
      <title></title>
    <script type="text/javascript">
    function cevir(){
    var el=document.getElementById('inp1');
    var el2=document.getElementById('inp2');
    if(el.value.length==1 && el.value==0) return el2.value="sıfır";
    var basamak=[
    [0,"","","","bin",""],
    [1,"bir","on","yüz","bin","on"],
    [2,"iki","yirmi","iki yüz","iki bin","yirmi"],
    [3,"üç","otuz","üç yüz","üç bin","otuz"],
    [4,"dört","kırk","dört yüz","dört bin","kırk"],
    [5,"beş","elli","beş yüz","beş bin","elli"],
    [6,"altı","altmış","altı yüz","altı bin","altmış"],
    [7,"yedi","yetmiş","yedi yüz","yedi bin","yetmiş"],
    [8,"sekiz","seksen","sekiz yüz","sekiz bin","seksen"],
    [9,"dokuz","doksan","dokuz yüz","dokuz bin","doksan"]
    ];
    
    var arr=[];
    for(var n=0, b=el.value.length; n<el.value.length; n++,b--) {
    for(var i=0; i<10; i++) {
    if(el.value.charAt(n)==basamak[i][0]) arr[arr.length]=basamak[i][b];
    }
    }
    el2.value=arr.join(" ");
    }
    </script>
    </head>
    <body>
    <input type="text" id="inp1" value="">
    <input type="button"  value="yazıya çevir" onclick="cevir()" >
    <input type="text" id="inp2" >
    </body>
    </html>
    
    
     
  5. merhum_dogan

    merhum_dogan Yeni Üye

    Kayıt:
    5 Mayıs 2008
    Mesajlar:
    2
    Beğenilen Mesajlar:
    0
    cok sagol cemal. tam aradigim gibi bisey
     
  6. wassago

    wassago Yeni Üye

    Kayıt:
    1 Eylül 2006
    Mesajlar:
    1
    Beğenilen Mesajlar:
    0
    yazılan kod, 15186,21 rakamını tam çevirmiyor.
     
  7. Eretna

    Eretna Daimi Üye

    Kayıt:
    20 Eylül 2007
    Mesajlar:
    1,634
    Beğenilen Mesajlar:
    0
    Meslek:
    WebMaster
    Şehir:
    Ankara
    @wassago
    o kadarı abartı olur. ama sen abartı olmadığını düşünüyorsan onuda kendin yapabilirsin.
     
  8. Mengu

    Mengu Daimi Üye

    Kayıt:
    4 Haziran 2007
    Mesajlar:
    1,323
    Beğenilen Mesajlar:
    0
    Meslek:
    Muebbet Ogrenci
    Şehir:
    Dersaadet
    şaka yaptı herhalde. :D
     
  9. chesterx

    chesterx Daimi Üye

    Kayıt:
    28 Aralık 2007
    Mesajlar:
    2,473
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Programlama
    Şehir:
    İstanbul
    hangi okul bu javascript öğretiyo ?
     
  10. cemal

    cemal Üye

    Kayıt:
    20 Ekim 2007
    Mesajlar:
    249
    Beğenilen Mesajlar:
    0
    Ben internetten öğreniyorum.
    Aşağıdaki gibi olabilir. Kendin geliştirebilirsin.
    Kod:
      
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
      <meta content="text/html; charset=UTF-8"
     http-equiv="content-type">
      <title></title>
    <script type="text/javascript">
    String.prototype.ara=function(){
    if(this.search(arguments[0])==-1) return  [this]; // virgül yoksa tek elemanlı bir diziye dön 
    for(var i=0; i<this.length; i++) if(this.charAt(i)==",") break;
    return [this.substring(0,i), this.substring(i+1)] // virgül varsa virgülden öncesini ve virgülden sonrasını içeren iki elemanlı bir diziye dön
    }
    
    function cevir(){
    var basamak=[
    [0,"","","","bin",""],
    [1,"bir","on","yüz","bin","on"],
    [2,"iki","yirmi","iki yüz","iki bin","yirmi"],
    [3,"üç","otuz","üç yüz","üç bin","otuz"],
    [4,"dört","kırk","dört yüz","dört bin","kırk"],
    [5,"beş","elli","beş yüz","beş bin","elli"],
    [6,"altı","altmış","altı yüz","altı bin","altmış"],
    [7,"yedi","yetmiş","yedi yüz","yedi bin","yetmiş"],
    [8,"sekiz","seksen","sekiz yüz","sekiz bin","seksen"],
    [9,"dokuz","doksan","dokuz yüz","dokuz bin","doksan"]
    ];
    
    var el=document.getElementById('inp1');
    var el2=document.getElementById('inp2');
    var A = el.value.ara(','); // el.value ara fonksiyonunda this ile temsil edilecek. A bir dizi. Çünkü fonksiyon diziye dönüyor.
    
    if(A.length==1 && A[0]==0) return el2.value="sıfır";
    
    var ondalik=["onda","yüzde","binde","onbinde","yüzbinde"];
    var c = (A.length>1)? " tam " + ondalik[A[1].length-1] + " " :  " "; 
    var netice=[]; // yazıya çevirdiklerimiz bunun içinde yer alacak
    for(var t=0; t<A.length; t++){
    var dizi=[]; // her rakamın karşılığı olan kelime bunun içine gelecek
    for(var n=0, b=A[t].length; n<A[t].length; n++,b--) {
    for(var i=0; i<10; i++) {
    if(A[t].charAt(n)==basamak[i][0]) dizi[dizi.length]=basamak[i][b];
    }
    }
    netice[netice.length]=  dizi.join(' ') ; // dizi isimli dizinin elemanları arasına boşluk koy, netice dizisine ata
    }
    el2.value= netice.join(c);  // eğer netice isimli dizi iki elemanlı ise araya parantez içindeki değeri koyacak.
    }
    </script>
    </head>
    <body>
    <input type="text" id="inp1" value="">
    <input type="button"  value="yazıya çevir" onclick="cevir()" >
    <input type="text" id="inp2"  size="70">
    </body>
    </html>
    
     
  11. cyberachill

    cyberachill Yeni Üye

    Kayıt:
    3 Eylül 2014
    Mesajlar:
    2
    Beğenilen Mesajlar:
    0
    Konu çok eski ama Google'dan aratıldığında en üstte çıkıyor. Benim de elimde bir kod var fakat virgüllü sayıları okumuyor. Yine de paylaşayım dedim.

    Kod:
    <html>
    <head>
    <title>Sayıyı Yazıya Çevirme</title>
    <meta charset="UTF-8" />
    
    
    <script type="text/javascript">
    
    var digits=[
        ["",""],
        ["Bir ","On "],
        ["İki ","Yirmi "],
        ["Üç ","Otuz "],
        ["Dört ","Kırk "],
        ["Beş ","Elli "],
        ["Altı ","Altmış "],
        ["Yedi ","Yetmiş "],
        ["Sekiz ","Seksen "],
        ["Dokuz ","Doksan "]
    ];
    
    
    var ranks=["","Bin ","Milyon ","Milyar ","Trilyon ","Katrilyon "];
    var hundred="Yüz ";
    
    
    function calistir() {
        var number=document.getElementById("num").value;
        
        while(number.length%3!=0) {
            number="0"+number;
        }
        
        document.getElementById("res").innerHTML="Sonuç: <b>"+read_number(number)+"</b>";
    }
    
    
    //Tüm sayıyı oku
    function read_number(number) {
        var loop_count=0;
        var result="";
        
        //Sağdan başlayarak sayıyı 3 haneli bloklara ayır
        for (var i=number.length-3;i>=0;i=i-3) {
            result=read_three(number.substr(i,3),loop_count)+result;
            loop_count++;
        }
        
        if(result=="") { //Sonuç boş döndüyse sayı "0" olmalı
            result="Sıfır";
        }
        
        return result;
    }
    
    
    //3 Haneli blokları oku.
    function read_three(number,i) {
        var output;
        var first=number.substr(2,1); //Birler basamağı
        var second=number.substr(1,1);//Onlar basamağı
        var third=number.substr(0,1); //Yüzler basamağı
        
        //Birler ve onlar basamağını oku
        output=digits[second][1]+digits[first][0];
    
    
        if(third=="1") { //"Bir Yüz" yok
            output=hundred+output;
        }else if(third!="0") { //Yüzler basamağı doluysa oku
            output=digits[third][0]+hundred+output;
        }
        
        if(output=="Bir "&&i==1) { //"Bir Bin" yok
            output="";
        }
        
        if(number!="000") { //Eğer 3'lü bloğun sayısal değeri yoksa rütbelendirme.
            output=output+ranks[i];
        }
        
        return output;
    }
    
    
    
    
    
    
    </script>
    </head>
    <body>
    <input type="text" id="num" /><br />
    <input type="button" value="Oku" onclick="calistir()" /><br /><br />
    <span id="res" style="color:green"></span>
    
    
    </body>
    </html>
    
     
  12. Kudret61

    Kudret61 Yeni Üye

    Kayıt:
    12 Eylül 2008
    Mesajlar:
    13
    Beğenilen Mesajlar:
    0
    çok güzel teşekkür ederim

    Peki yazıyı çevir butonu olmadan yapabilirmiyiz bunu ? Yani yazarken otomatik diğer text formunda yazdırabilirmiyiz ?
     
  13. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    5
    Meslek:
    Med Student
    Şehir:
    Ankara
    calistir fonksiyonunu onclick olarak değil de text inputuna onkeydown gibi bir event'e göre çalıştırırsanız yapabilirsiniz.
     
  14. Kudret61

    Kudret61 Yeni Üye

    Kayıt:
    12 Eylül 2008
    Mesajlar:
    13
    Beğenilen Mesajlar:
    0
    Yapamıyorum :(
     
  15. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    5
    Meslek:
    Med Student
    Şehir:
    Ankara
    Neden, sorun nedir?
     
  16. Kudret61

    Kudret61 Yeni Üye

    Kayıt:
    12 Eylül 2008
    Mesajlar:
    13
    Beğenilen Mesajlar:
    0
    Çalışmıyor yaptığım denemeler. bu scripte uygulayamadım onkeydown komutunu
     
  17. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    5
    Meslek:
    Med Student
    Şehir:
    Ankara
  18. Kudret61

    Kudret61 Yeni Üye

    Kayıt:
    12 Eylül 2008
    Mesajlar:
    13
    Beğenilen Mesajlar:
    0
    Zahmet verdim ama! Çoook işime yaradı teşekkür ederim :)
     
  19. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    5
    Meslek:
    Med Student
    Şehir:
    Ankara
    Rica ederim de büyük sayılarda sıkıntı var sanırım. Kullanıcının girdiği değer çok basamaklı değildir umarım. ^^ İyi çalışmalar.
     
  20. Kudret61

    Kudret61 Yeni Üye

    Kayıt:
    12 Eylül 2008
    Mesajlar:
    13
    Beğenilen Mesajlar:
    0
    Talimat 30000 geçemez buyüzden benim için problem değil:) tşkr..