Bulunan 1 den 10 - Toplam 10
Yazıyı Rakama Çevirme - - Programlama - Ceviz Forum
  1. #1
    Ceviz Üyesi
    Üyelik Tarihi
    31-Aralık-2008
    Nereden
    RiZE
    Mesaj
    77

    Varsayılan Yazıyı Rakama Çevirme

    Merhaba arkadaşlar.

    Hem çalışma amaçlı hemde proje amaçlı bir projem var.

    Aslında projeyi yaptım fakat birazda farklı çalışmasını istediğim için sizlerden yardım almak istedim.

    Kod:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
      <meta content="text/html; charset=iso 8859-9"
     http-equiv="content-type">
      <title>Samet DİNÇER</title>
    <script type="text/javascript">
    function cevir(){
    var el=document.getElementById('sayi1');
    var el2=document.getElementById('sayi2');
    if(el.value.length==1 && el.value==0) return el2.value="sıfır";
    var basamak=[
    [0,"","","","bin",""],
    [1,"bir","on","yüz","bin","onbir","yüz","birmilyon","on","yüz"],
    [2,"iki","yirmi","iki yüz","iki bin","yirmi","ikiyüz","ikimilyon","yirmi","ikiyüz",],
    [3,"üç","otuz","üç yüz","üç bin","otuz","üçyüz","üçmilyon","otuz","üçyüz"],
    [4,"dört","kırk","dört yüz","dört bin","kırk","dörtyüz","dörtmilyon","kırk","dörtyüz"],
    [5,"beş","elli","beş yüz","beş bin","elli","beşyuz","beşmilyon","elli","beşyuz"],
    [6,"altı","altmış","altı yüz","altı bin","altmış","altıyuz","altımilyon","altmış","altıyuz"],
    [7,"yedi","yetmiş","yedi yüz","yedi bin","yetmiş","yediyuz","yedimilyon","yetmiş","yediyuz"],
    [8,"sekiz","seksen","sekiz yüz","sekiz bin","seksen","sekizyuz","sekizmilyon","seksen","sekizyuz"],
    [9,"dokuz","doksan","dokuz yüz","dokuz bin","doksan","dokuzyuz","dokuzmilyon","doksan","dokuzyuz"]
    ];
    
    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="sayi1" value="">
    <input type="button"  value="yazıya çevir" onclick="cevir()" >
    <input type="text" id="sayi2" >
    </body>
    </html>
    bu şekilde 999999999 a kadar olan sayıların yazıya uyarlı şeklini çeviriyor.

    Benim ugraştığım konu ise birde bunu tersten yaptırmak ama ugraşıyorum ugraşıyorum yaptıramıyorum.

    Yardımlarınızı bekliyorum.

  2. #2
    Cave Quid Optes James De Souza Üyenin Avatarı
    Üyelik Tarihi
    19-Şubat-2008
    Nereden
    İzmir
    Mesaj
    2,030

    Varsayılan

    PHP Kodu:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <
    html>
    <
    head>
      <
    meta content="text/html; charset=iso-8859-9" http-equiv="content-type">
      <
    title>Samet DİNÇER</title>
    <
    script type="text/javascript">
    function 
    cevir() {
        var 
    document.getElementById('neye').value;
        var 
    el document.getElementById('sayi1');
        var 
    el2 document.getElementById('sayi2');
        var 
    basamak = [
            [
    0"""""""bin"""],
            [
    1"bir""on""yüz""bin""onbir""yüz""birmilyon""on""yüz"],
            [
    2"iki""yirmi""ikiyüz""ikibin""yirmi""ikiyüz""ikimilyon""yirmi""ikiyüz"],
            [
    3"üç""otuz""üçyüz""üçbin""otuz""üçyüz""üçmilyon""otuz""üçyüz"],
            [
    4"dört""kırk""dörtyüz""dört bin""kırk""dörtyüz""dörtmilyon""kırk""dörtyüz"],
            [
    5"beş""elli""beşyüz""beşbin""elli""beşyuz""beşmilyon""elli""beşyuz"],
            [
    6"altı""altmış""altıyüz""altıbin""altmış""altıyuz""altımilyon""altmış""altıyuz"],
            [
    7"yedi""yetmiş""yediyüz""yedibin""yetmiş""yediyuz""yedimilyon""yetmiş""yediyuz"],
            [
    8"sekiz""seksen""sekizyüz""sekizbin""seksen""sekizyuz""sekizmilyon""seksen""sekizyuz"],
            [
    9"dokuz""doksan""dokuzyüz""dokuzbin""doksan""dokuzyuz""dokuzmilyon""doksan""dokuzyuz"]
        ];
        
        if(
    w=="y"){
            if (
    el.value.length == && el.value == 0) return el2.value "sıfır";
            var 
    arr = [];
            for (var 
    0el.value.lengthel.value.lengthn++, b--) {
                for (var 
    010i++) {
                    if (
    el.value.charAt(n) == basamak[i][0]) arr[arr.length] = basamak[i][b];
                }
            }
            
    el2.value arr.join(" ");
        }else{
            if (
    el2.value == "sıfır") return el.value 0;
            var 
    r="";
            var 
    bsm el2.value.split(" ");
            var 
    bsm.length;
            for (var 
    0lln++, b--) {
                for (var 
    010i++) {
                    if(
    bsm[n]==basamak[i][b]) r=r.toString()+basamak[i][0].toString();
                }
            }
            
    el.value r;
        }
    }
    </script>
    </head>
    <body>
    <input type="text" id="sayi1" value="">
    <select id="neye">
        <option value="y">Yazıya</option>
        <option value="r">Rakama</option>
    </select>
    <input type="button"  value="çevir" onclick="cevir()" >
    <input type="text" id="sayi2" >
    </body>
    </html> 
    be careful what you wish for

  3. #3
    Ceviz Üyesi
    Üyelik Tarihi
    31-Aralık-2008
    Nereden
    RiZE
    Mesaj
    77

    Varsayılan

    Teşekkürler.

    if deyimi aklıma geldi fakat kullanımını ayarlıyamamıştım.

    Birde aynı bölümde farklı iki işlem yapmaya çalıştıryordum .

  4. #4
    Ceviz Üyesi
    Üyelik Tarihi
    21-Nisan-2009
    Mesaj
    4

    Varsayılan

    @Emrah Bıçak Verdiğiniz Kodu çalıştırınca Yazıyı Sayıya Çevrilmediğini Farkettim.Sorun Neidr.

  5. #5
    Cave Quid Optes James De Souza Üyenin Avatarı
    Üyelik Tarihi
    19-Şubat-2008
    Nereden
    İzmir
    Mesaj
    2,030

    Varsayılan

    yazma şeklin ile alakalıdır.
    yüz yirmi bir yazarsan 121 verir. yüzyirmibir yazarsan vermez. her basamağı arada boşluk bırakarak yazman gerek.

    P.S.: Özel mesajını bundan önce okumuştum
    be careful what you wish for

  6. #6
    Ceviz Üyesi
    Üyelik Tarihi
    20-Haziran-2005
    Mesaj
    32

    Varsayılan

    PHP Kodu:
    function Yaziyla($rakam){
       
    $rakam   explode(".",$rakam);
       
    $tl     preg_split('//'preg_replace('/[^\d]/','',$rakam[0]),-1,1);
       
    $kr     preg_split('//'preg_replace('/[^\d]/','',$rakam[1]),-1,1);
                  
    krsort($tl); $tl array_values($tl);

       
    $basamak count($tl);
       
    $birler  = array("","bir","iki","üç","dört","beş","altı","yedi","sekiz","dokuz" );
       
    $onlar   = array("","on","yirmi","otuz","kırk","elli","atmış","yetmiş","seksen","doksan");
       
    $katlar  = array("","bin","milyon","milyar","trilyon","katrilyon","trilyar","katrilyar"); # ....

       
    if(!isset($katlar[floor(($basamak-1)/3)]))
       return -
    1;

       for(
    $i=0$i $basamak$i=$i+3){
         
    $kat   $katlar[floor($i/3)];
         
    $bolum =
           ( 
    $tl[$i+2] ? ( $tl[$i+2] == "yüz" $birler[$tl[$i+2]]."yüz" ) : "" ).
           ( 
    $onlar [$tl[$i+1]] ).
           ( 
    $i == ? ( $tl[3] == ? ( $basamak == " " "bir" ) : $birler[$tl[$i]] ) : $birler[$tl[$i]] );
         
    $sonuc = ( $bolum $bolum.$kat "" ).$sonuc;
         }

       
    $sonuc .= "TL".( $kr[0] ? $onlar[$kr[0]].$birler[$kr[1]]."KR" "" );
       return 
    $sonuc;
       } 
    Ben yazmadım, zamanında ihtiyacım olmuştu böyle birşeye.. Gerçekten çok iyi (:

    Edit: Öhem öhem, pardon ben rakamı yazıya olarak algılamışım.. Bu da tam tersi işte, belki birisinin işine yarar (:

  7. #7
    Ceviz Üyesi
    Üyelik Tarihi
    21-Nisan-2009
    Mesaj
    4

    Varsayılan

    javascript isteniliyo php değil

  8. #8
    Ceviz Üyesi
    Üyelik Tarihi
    21-Nisan-2009
    Mesaj
    4

    Varsayılan

    Alıntı Emrah Bıçak Demiş ki: Mesajı Görüntüle
    yazma şeklin ile alakalıdır.
    yüz yirmi bir yazarsan 121 verir. yüzyirmibir yazarsan vermez. her basamağı arada boşluk bırakarak yazman gerek.

    P.S.: Özel mesajını bundan önce okumuştum
    dokuz yüz yedi yazdığım zaman olmuyor işte

  9. #9
    Cave Quid Optes James De Souza Üyenin Avatarı
    Üyelik Tarihi
    19-Şubat-2008
    Nereden
    İzmir
    Mesaj
    2,030

    Varsayılan

    Güzel bir bug yakalamışsın Tamamen gözden kaçırmışım.
    PHP Kodu:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <
    html>
    <
    head>
      <
    meta content="text/html; charset=iso-8859-9" http-equiv="content-type">
      <
    title>Samet DİNÇER</title>
    <
    script type="text/javascript">
    function 
    cevir() {
        var 
    document.getElementById('neye').value;
        var 
    el document.getElementById('sayi1');
        var 
    el2 document.getElementById('sayi2');
        var 
    basamak = [
            [
    0"""""""bin"""],
            [
    1"bir""on""yüz""bin""onbir""yüz""birmilyon""on""yüz"],
            [
    2"iki""yirmi""ikiyüz""ikibin""yirmi""ikiyüz""ikimilyon""yirmi""ikiyüz"],
            [
    3"üç""otuz""üçyüz""üçbin""otuz""üçyüz""üçmilyon""otuz""üçyüz"],
            [
    4"dört""kırk""dörtyüz""dört bin""kırk""dörtyüz""dörtmilyon""kırk""dörtyüz"],
            [
    5"beş""elli""beşyüz""beşbin""elli""beşyuz""beşmilyon""elli""beşyuz"],
            [
    6"altı""altmış""altıyüz""altıbin""altmış""altıyuz""altımilyon""altmış""altıyuz"],
            [
    7"yedi""yetmiş""yediyüz""yedibin""yetmiş""yediyuz""yedimilyon""yetmiş""yediyuz"],
            [
    8"sekiz""seksen""sekizyüz""sekizbin""seksen""sekizyuz""sekizmilyon""seksen""sekizyuz"],
            [
    9"dokuz""doksan""dokuzyüz""dokuzbin""doksan""dokuzyuz""dokuzmilyon""doksan""dokuzyuz"]
        ];
        
        if(
    w=="y"){
            if (
    el.value.length == && el.value == 0) return el2.value "sıfır";
            var 
    arr = [];
            for (var 
    0el.value.lengthel.value.lengthn++, b--) {
                for (var 
    010i++) {
                    if (
    el.value.charAt(n) == basamak[i][0]) arr[arr.length] = basamak[i][b];
                }
            }
            
    el2.value arr.join(" ");
        }else{
            
    el.value "";
            if (
    el2.value == "sıfır") return el.value 0;
            var 
    true;
            var 
    bsm el2.value.split(" ");
            var 
    bsm.length;
            for (var 
    110n++) {
                
    true;
                for (var 
    010i++) {
                    if(
    bsm[l-1]==basamak[i][n]){
                        
    l--;
                        
    el.value=basamak[i][0].toString()+el.value;
                        
    s=false;
                    }
                }
                if(
    sel.value="0"+el.value;
            }
            
    el.value parseInt(el.value,10);
        }
    }
    </script>
    </head>
    <body>
    <input type="text" id="sayi1" value="">
    <select id="neye">
        <option value="y">Yazıya</option>
        <option value="r" selected>Rakama</option>
    </select>
    <input type="button"  value="çevir" onclick="cevir()" >
    <input type="text" id="sayi2" value="dokuzyüz yedi" >
    </body>
    </html> 
    Ayrıca kod PHP değil...
    be careful what you wish for

  10. #10
    Ceviz Üyesi
    Üyelik Tarihi
    21-Nisan-2009
    Mesaj
    4

    Varsayılan

    Alıntı tukrok Demiş ki: Mesajı Görüntüle
    PHP Kodu:
    function Yaziyla($rakam){
       
    $rakam   explode(".",$rakam);
       
    $tl     preg_split('//'preg_replace('/[^\d]/','',$rakam[0]),-1,1);
       
    $kr     preg_split('//'preg_replace('/[^\d]/','',$rakam[1]),-1,1);
                  
    krsort($tl); $tl array_values($tl);

       
    $basamak count($tl);
       
    $birler  = array("","bir","iki","üç","dört","beş","altı","yedi","sekiz","dokuz" );
       
    $onlar   = array("","on","yirmi","otuz","kırk","elli","atmış","yetmiş","seksen","doksan");
       
    $katlar  = array("","bin","milyon","milyar","trilyon","katrilyon","trilyar","katrilyar"); # ....

       
    if(!isset($katlar[floor(($basamak-1)/3)]))
       return -
    1;

       for(
    $i=0$i $basamak$i=$i+3){
         
    $kat   $katlar[floor($i/3)];
         
    $bolum =
           ( 
    $tl[$i+2] ? ( $tl[$i+2] == "yüz" $birler[$tl[$i+2]]."yüz" ) : "" ).
           ( 
    $onlar [$tl[$i+1]] ).
           ( 
    $i == ? ( $tl[3] == ? ( $basamak == " " "bir" ) : $birler[$tl[$i]] ) : $birler[$tl[$i]] );
         
    $sonuc = ( $bolum $bolum.$kat "" ).$sonuc;
         }

       
    $sonuc .= "TL".( $kr[0] ? $onlar[$kr[0]].$birler[$kr[1]]."KR" "" );
       return 
    $sonuc;
       } 
    Ben yazmadım, zamanında ihtiyacım olmuştu böyle birşeye.. Gerçekten çok iyi (:

    Edit: Öhem öhem, pardon ben rakamı yazıya olarak algılamışım.. Bu da tam tersi işte, belki birisinin işine yarar (:
    @Emrah Bey Ben tukrok'un yazdığı kod için php demiştim.(Basbaya $,isset var.)

Konu Bilgileri

Bu Konuya Gözatan Kullanıcılar

Şu anda 1 kullanıcı bu konuyu görüntülüyor. (0 kayıtlı ve 1 misafir)

Yer İmleri

Mesaj Yetkileriniz

  • Yeni konu açmaya yetkiniz yok
  • Cevap yazmaya yetkiniz yok
  • Eklenti yüklemeye yetkiniz yok
  • Mesajınızı düzeltmeye yetkiniz yok
  •