Ruby’de Sayiyi Yaziya Ceviren Program
Ruby ile yapilmis sadece algoritma gelistirmeye yonelik bir calisma .Konsol programi olmakla beraber eger istenirse glade ile arayuz yapilip ve ya bir kac degisiklik yapilarak eklenti haline getirilebilir.Ornegin doviz birolari icin verilen paranin miktarini gonderip turkce okunus karsiligini geri gonderen bir fonksiyona donusturulebilir.Herneyse olayin genel mantigini anlatmak gerekirse eger turkce sayilarin okunusuna dikkat ederseniz,ilk uc haneden sonra bundan sonra gelen hanelerin sonuna basamak adi getirilerek devam edilir.Bir kac ornek ;
321 = Uc yuz + yirmi + bir
234754 = iki yuz +otuz +dort – bin – yedi yuz+ elli +dort // goruldgu gibi uc hane seklinde tekrarlaniyor sadece her uc hanede bir basamak adi ekleniyor.
Ozel durumlar :
Bu durumlar goz onunde bulundurularak bir kod yazmak istersek kisaca yazacagimiz kod soyle olmalidir.Sayimiz kac tane uclukten olusuyor.Bu uclukleri sirasiyla yazdirdiktan sonra (sayi degerini basamak degerini falan bulduktan sonra).Push yapip stack’a atiyoruz her atma olayindan once kacinci basamakta oldugumuzuda konrol edip sonuna ekliyoruz ki pop yaptigimizda sonucumuz sirali gelsin.Peki ama sayimiz ucun kati degilse bu olusacak ucluler patlamayacakmi bunuda en sondaki kalan kisminda tekrar baska uclu varmiscasina ama kac haneli olduguna bakarak ve ozel durumlarin ustesinden geliyoruz.
-
span class=”st0″>"Okunacak sayiyi : "#eksi sayiyi handle etme
-
a=a.abs
-
sayi=a
-
#eksi sayiyi handle etme
-
"sifir"#
-
b[i]=a.modulo(katsayi) #basamaksal deger bulma
-
a=a-b[i] #
-
rakam[i] =(b[i]/(katsayi/10)) #rakamsal deger bulma
-
-
i=i+1 #basamak sayisi
-
"", 1 => "bir",2 => "iki",3 => "uc" ,4 => "dort",5 => "bes",6 => "alti",7 => "yedi", 8 => "sekiz", 9 => "dokuz"}
-
onlar= { 0 =>"",1 => "on",2 => "yirmi",3 => "otuz" ,4 => "kirk",5 => "elli",6 => "altmis",7 => "yetmis", 8 => "seksen", 9 => "doksan"}
-
hane =[ "" , "bin", "milyon", "milyar", "tirilyon", "katrilyon", "kentilyon", "seksilyon", "septilyon", "oktilyon", "nonilyon", "desilyon", "undesilyon", "dodesilyon", "tredesilyon", "kattuordesilyon", "kendesilyon", "sexdesilyon", "septendesilyon", "oktodesilyon", "novemdesilyon", "vigintilyon", "unvigintilyon", "dovigintilyon", "trevigintilyon", "kattuorvigintilyon", "kenvigintilyon"]
-
-
#kac haneli oldugunu bildigimiz sayinin hanelerini 3erli ayirmam lazim icinde kac tane 3 erli grup
-
#oldugunu i sayisini 3 e bolerek bulup daha sonrada 3 e gore modunu alip sayiyi tamamlamak gerek
-
#puts "Kac grup :" + kac_grup.to_s
-
artan=i.modulo(3)
-
-
z=0
-
c=0
-
-
#3 hane veya buyukse gir
-
" "# print birler[rakam] + " yuz " + onlar[rakam] + " " +birler[rakam] + " "
-
" yuz " + onlar[rakam[c+1]] + " " +birler[rakam[c]] + " "" " +birler[rakam[c]] + " "" yuz " + onlar[rakam[c+1]] + " " +birler[rakam[c]] + " "#puts "bir sekilde yazdirdiktan sonra 3 arttirrip artan degiskenini eklemek lazim"
-
#3 hane veya buyukse cik
-
#puts "Sonraki " + birler[rakam] + " " + hane[z]
-
"bir "" bir "+ hane[z] + " ""bin "" " + hane[z] + " "#sayi_oku.push( birler[rakam] + " " + hane[z] )
-
# puts "Sonraki 2 " + onlar[ rakam ] + " " +birler[ rakam ] + " " + hane[z]
-
" " +birler[ rakam[c] ] + " " + hane[z] + " ""Eksi ""================================================================="" = """"================================================================="""
This program basically gets the number from console and writes to screen how its pronounce in Turkish.
Tags
Recent Posts
- PriveMall Davetiye
- Polymorphism (Overloading)
- Nautilus ve Ssh Bağlantısı
- Highlighting Nano
- Difference between C++ Class and C struct
- Gcc 4.3 and Header issues
- Re-Enable restarting X server with Ctrl+Alt+Backspace in Jaunty
- I Installed BETTER
- Ruby’de Sayiyi Yaziya Ceviren Program
- Ubuntu Volume Wheel Problem [ Fix ]
- Google Android
- Encoding mysql dump file while importing from console
- Ubuntu altinda mp3 kesmek {Cutting mp3 files over ubuntu}
- Flv’den mp3 elde eden bash programi {Converting flv to mp3}
- Video Sitelerinden İçerik İndirmek ve Videolardan Ses Almak