Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Delphi ile Sayıyı Metine Çevirme #KAYNAK#

Konu, 'Pascal / Delphi / Delphi.NET' kısmında hmustak tarafından paylaşıldı.

  1. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    Bu fonksiyonu Copy/Paste yaparak kullanabilirsiniz. Fonksiyon geriye String çeviriyor dikkat.

    function Cevir(Val : extended) : String;
    const
    hanex : array[0..2, '0'..'9'] of String = (
    ('', 'Bir ', 'İki ', 'Üç ', 'Dört ', 'Beş ', 'Altı ', 'Yedi ', 'Sekiz ', 'Dokuz '),
    ('', 'On ', 'Yirmi ', 'Otuz ', 'Kırk ', 'Elli ', 'Atmış ', 'Yetmiş ', 'Seksen ', 'Doksan '),
    ('', '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 '));
    katx : array[0..5] of String = ('', 'Bin ', 'Milyon ', 'Milyar ', 'Trilyon ', 'Katrilyon ');
    var
    Kat : Integer;
    function _Cevir(sy : String) : String;
    var
    lsy, hn : Integer;
    begin
    Result := ''; if sy = '' then Exit;
    if (sy = '1') and (kat = 1) then begin Result := 'Bin'; Exit; end;
    hn := 0; lsy := length(sy);
    while (hn < 3) and (hn < lsy)
    do
    begin
    Result := hanex[hn, sy[lsy - hn]] + Result;
    Inc(hn);
    end;
    Result := Result + katx[kat];
    Inc(kat);
    if lsy > 3 then Result := _Cevir(copy(sy, 1, lsy - 3)) + Result;
    end;
    begin
    Result := ''; kat := 0;
    Result := _Cevir(formatFloat('##0', int(Val)));
    end;
     
  2. ee++

    ee++ Daimi Üye

    Kayıt:
    25 Temmuz 2002
    Mesajlar:
    1,122
    Beğenilen Mesajlar:
    0
    Şehir:
    Ankara
    Şeytan diyor: "C'de 10 satırda yaz şunu!" :D

    Neyse mübarek gün, uymayım.. :)
     
  3. Huzeyfe

    Huzeyfe Üye

    Kayıt:
    18 Ekim 2002
    Mesajlar:
    95
    Beğenilen Mesajlar:
    0
    Meslek:
    SEcurity Administrator
    Şehir:
    Kocaeli
    :)yaz yaz yaz ....
     
  4. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    @ee++
    Geçenki wordlist olayını unutmuş değilim :D . Amaille yazıcam diyosan, yazdığım bi prog daha var, ama biraz illegal çizgide, onu şeytana uyup 10 satıra indir :)

    @huzeyfe
    olm. gaza getirme şunu, en hızlı diyoz 2ye katlıyo, en küçük diyoz, yarısı kadar yapıyo, bıraktırıcak walla bana bu işi...


    (tabi bunlar heeep $aka...)
     
  5. CrazyCat

    CrazyCat Daimi Üye

    Kayıt:
    25 Temmuz 2002
    Mesajlar:
    653
    Beğenilen Mesajlar:
    0
    Meslek:
    lecturer
    Şehir:
    Adana
    Bi program en fazla bu kadar uzatılabilirdi :D

    Bir ara bişeler yapmak için başlamıştım inşaat halinde bırakmışım. İskele için kullandığım kalaslarla harç için yığdığım çimento ve aletleri ayıklarsam bişeye benzer..

    Şaka bi tarafa plansız olarak yazdığım için yanlış bir yol kullandığımı farkedince yarım bırakmışım. :D

    Ama Çalışıyor. (tabi çalışmak amaç ise ii )

    PHP:

    #include <iostream>
    #include <string>
    typedef char st[12];
    typedef char stt[24];
        
    st birler[10] = {"sifir","Bir","Iki","Uc","Dort""Bes","Alti","Yedi","Sekiz","Dokuz"};
        
    st onlar[10]= {"","On","Yirmi","Otuz","Kirk","Elli""Altmis","Yetmis","Seksen","Doksan"};

    class 
    Basamak

           
    long *sayi;
        
    int basamak;
        
    int basamak_say;
       public:
       static 
    char yazi[100];
       static 
    char Yaziyla[100];    
       
    Basamak (long);
       ~
    Basamak ();    
       
    int basamak_adedi (void);
       
    char YaziyaCevir (void); 
           
     };
        
    char Basamak::yazi[100]=""
        
    char Basamak::Yaziyla[100]=" "
        
    Basamak::Basamak (long a)  // nesne yapıcı
       

        
    sayi=new long;
        *
    sayi a;
       }
       
    Basamak::~Basamak () // nesne silici
         
    {
            
    delete sayi;  
         }
     
     
    int Basamak::basamak_adedi (void// üye fonksiyon
       
    {
          
    char buffer[100];
          
    _itoa( *sayibuffer10 );
          
    yazi=buffer;
          return (
    basamak_say=strlen(buffer));
       }
     
    char Basamak::YaziyaCevir (void)
       {
         
    stt Basamak_Yaz[8];
         
    char Sonuc[100]="";
       for (
    int x=basamak_say-1;x>=0;x--)
       
                {
             
              
    char m;
             
    int kacinci=basamak_say-x;
              
              switch( 
    kacinci 
              {
                  case 
    1:
                     
                     if (
    basamak_say>1&atoi(&(m=(yazi[x])))==0) {
                     
    cout<<"yazi["<<x<<"]="<<yazi[x]<<" = "<<endl;
                      }
                     else {
                 
                      
    strcat(Yaziyla,birler[atoi(&(m=(yazi[x])))]);
                      
    strcpy(Basamak_Yaz[0],birler[atoi(&(m=(yazi[x])))]);
                                        
                      }
                      
                     break;
                  case 
    2:
                   
                   
                    
    strcat(Yaziyla,onlar[atoi(&(m=(yazi[x])))]);
                    
    strcpy(Basamak_Yaz[1],onlar[atoi(&(m=(yazi[x])))]);
                    break;
                  case 
    3
                    
                    if (
    atoi(&(m=(yazi[x])))!=1&atoi(&(m=(yazi[x])))!=0)
                     {
                 
                    
    strcat(Yaziyla,birler[atoi(&(m=(yazi[x])))]);
                   
    strcat(Yaziyla,"Yuz");
                   
                   
    strcpy(Basamak_Yaz[2],birler[atoi(&(m=(yazi[x])))]);
                   
    strcat (Basamak_Yaz[2],"Yuz");
                   
                     }
                     else if (
    atoi(&(m=(yazi[x])))!=0){
                  
                     
    strcat(Yaziyla,"Yuz");
                     
    strcpy(Basamak_Yaz[2],"Yuz"); 
                     }
                                    
                    break;
                    
                  case 
    4:
                    
                    if (
    atoi(&(m=(yazi[x])))!=1&atoi(&(m=(yazi[x])))!=0||basamak_say>4&atoi(&(m=(yazi[x])))!=0)
                     {
                 
                     
    strcat(Yaziyla,birler[atoi(&(m=(yazi[x])))]);
                     
    strcat(Yaziyla,"Bin");
                     
                     
    strcpy(Basamak_Yaz[3],birler[atoi(&(m=(yazi[x])))]);
                     
    strcat(Basamak_Yaz[3],"Bin");
                     }
                     else if (
    atoi(&(m=(yazi[2])))!=0||atoi(&(m=(yazi[3])))!=0)
                      {
                   
                        
    strcat(Yaziyla,"Bin");
                        
    strcpy(Basamak_Yaz[3],"Bin");   
                      }
                      else 
    cout<<"yazi["<<x<<"]="<<yazi[x]<<" = "<<endl
                    break;
                  case 
    5:
                    
                    
    strcat(Yaziyla,onlar[atoi(&(m=(yazi[x])))]);
                    
    strcpy(Basamak_Yaz[4],onlar[atoi(&(m=(yazi[x])))]);
                    
                    break;
                  
                  case 
    6:
                     if (
    atoi(&(m=(yazi[x])))!=1&atoi(&(m=(yazi[x])))!=0)
                     {
                   
                     
    strcat(Yaziyla,birler[atoi(&(m=(yazi[x])))]);
                     
    strcat(Yaziyla,"Yuz");
                     
                     
    strcpy(Basamak_Yaz[5],birler[atoi(&(m=(yazi[x])))]);
                     
    strcat(Basamak_Yaz[5],"Yuz");
                     }
                    else if (
    atoi(&(m=(yazi[x])))==1)
                          {
                     
                           
    strcat(Yaziyla,"Yuz");
                           
    strcpy(Basamak_Yaz[5],"Yuz");
                          }
                   
                    break;
                    
                  case 
    7:  
                     if (
    atoi(&(m=(yazi[x])))!=0)
                     {
                   
                     
    strcat(Yaziyla,birler[atoi(&(m=(yazi[x])))]);
                     
    strcat (Yaziyla,"Milyon");
                     
                     
    strcpy(Basamak_Yaz[6],birler[atoi(&(m=(yazi[x])))]);
                     
    strcat(Basamak_Yaz[6],"Milyon");
                     }
                     else  {
                    
                              
    strcat(Yaziyla,"Milyon");
                              
    strcpy(Basamak_Yaz[6],"Milyon");
                           }
                    break;
                  case 
    8:  
                    
                  
                     
    strcat(Yaziyla,onlar[atoi(&(m=(yazi[x])))]);
                     
    strcpy(Basamak_Yaz[7],onlar[atoi(&(m=(yazi[x])))]);
                  default :
                    
    cout<<endl;
              }

           }
            
              for (
    int j=basamak_say-1;j>=0;j--)
             {
               
    strcat(Sonuc,Basamak_Yaz[j]);
             }
            
    cout<<"Sonuc ="<<Sonuc<<endl;
        return (
    0);
       
       } 
     
    int main(int argcchar *argv[])
    {
      
    long cevir;
     
        
      
    cin>>cevir;
      
      
    Basamak Yaziyla(cevir); // nesne yapıcı ile nesne oluşturuldu.
      
      
    cout<<Yaziyla.basamak_adedi ();
      
    cout<<endl;
      
    Yaziyla.YaziyaCevir ();
      
     
    // cout<<"yazi ="<<Yaziyla.yazi<<endl;
     // cout<<"Yaziyla ="<<Yaziyla.Yaziyla<<endl;
      
    system("PAUSE");    
      return 
    0;
    }

     
  6. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    @crazycat
    Kutlarım çok başarılı. Amma... :) ee++ dan ses gelmiyosa (ki benimwordlistmaker'ı gösterdiğimde de bi süre gelmemişti.:) ) emin olkioturup en cimri kodları en kısa şekilde yazmaya başlamıştır. Hiç ummadığın algoritmalarla, bide öğretme isteği ile tutuşturu verir yeni derlemeyi...
    Bak göreceksin :)

    Ellerine sağlık :)
     
  7. ee++

    ee++ Daimi Üye

    Kayıt:
    25 Temmuz 2002
    Mesajlar:
    1,122
    Beğenilen Mesajlar:
    0
    Şehir:
    Ankara
    Yok yav.. Ne ugrascam.. Ugrastigim isleri bi bilsen.. :) :(..
     
  8. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    bu dönemi nasıl özlüyorum forumda, anlatamam...