Sayıları Para olarak Yazıya Çevirmek (Google AI Studio ile)

Makrolar ve Basic programlama dili özel bölümü
Cevapla
Kullanıcı avatarı
Hamurcu
Mesajlar: 268
Kayıt: 06 Ağu 2012, 00:14
İşletim Sisteminiz: Windows 10/11 - Pardus Linux
LibreOffice Sürümü: 7.x

Sayıları Para olarak Yazıya Çevirmek (Google AI Studio ile)

Mesaj gönderen Hamurcu »

Merhaba,

Google'ın tamamen ücretsiz AI modeli olan Gemini Experimental ile ufak bir deneme yaptım.

Yıllar önce kendi yazdığım BASIC makrosunu bu sefer Google Gemini'ye yazdırdım.

Toplamda 5-6 defa hatalı kod üretti ancak çeşitli yönlendirmelerle sonunda doğru kodu yazabildi.

Merak edenler için kod'u aşağıda paylaşıyorum.

Kod: Tümünü seç

Function ParaOku(Sayi As Double) As String

  Dim Birler(9) As String
  Dim Onlar(9) As String
  Dim Yuzler(9) As String
  Dim Binler(13) As String
  
  Birler(0) = ""
  Birler(1) = "Bir"
  Birler(2) = "İki"
  Birler(3) = "Üç"
  Birler(4) = "Dört"
  Birler(5) = "Beş"
  Birler(6) = "Altı"
  Birler(7) = "Yedi"
  Birler(8) = "Sekiz"
  Birler(9) = "Dokuz"
  
  Onlar(0) = ""
  Onlar(1) = "On"
  Onlar(2) = "Yirmi"
  Onlar(3) = "Otuz"
  Onlar(4) = "Kırk"
  Onlar(5) = "Elli"
  Onlar(6) = "Altmış"
  Onlar(7) = "Yetmiş"
  Onlar(8) = "Seksen"
  Onlar(9) = "Doksan"
  
  Yuzler(0) = ""
  Yuzler(1) = "Yüz"
  Yuzler(2) = "İki Yüz"
  Yuzler(3) = "Üç Yüz"
  Yuzler(4) = "Dört Yüz"
  Yuzler(5) = "Beş Yüz"
  Yuzler(6) = "Altı Yüz"
  Yuzler(7) = "Yedi Yüz"
  Yuzler(8) = "Sekiz Yüz"
  Yuzler(9) = "Dokuz Yüz"
  
  Binler(0) = ""
  Binler(1) = "Bin"
  Binler(2) = "Milyon"
  Binler(3) = "Milyar"
  Binler(4) = "Trilyon"
  Binler(5) = "Katrilyon"
  Binler(6) = "Kentilyon"
  Binler(7) = "Seksilyon"
  Binler(8) = "Septilyon"
  Binler(9) = "Oktilyon"
  Binler(10) = "Nonilyon"
  Binler(11) = "Desilyon"
  Binler(12) = "Andesilyon"

  Dim ParaBirimi As String
  Dim KurusBirimi As String
  ParaBirimi = "Türk Lirası"
  KurusBirimi = "Kuruş"
  
  Dim Yazi As String
  Dim TamSayi As Long
  Dim Kurus As Byte
  Dim Grup As Byte
  Dim UcBasamak As Integer
  Dim Bir As Byte, Iki As Byte, Uc As Byte
  Dim BinlikYazi As String
  
  ' Negatif sayı kontrolü
  If Sayi < 0 Then
    Yazi = "Eksi "
    Sayi = -Sayi
  Else
    Yazi = ""
  End If
  
  ' Noktadan sonraki ondalık basamakları ayır ve kuruş olarak sakla
  TamSayi = Int(Sayi)
  Kurus = (Sayi - TamSayi) * 100
  
  ' Sayı 0 ise
  If TamSayi = 0 Then
    Yazi = "Sıfır " & ParaBirimi
  Else
    Grup = 0
    Do While TamSayi > 0
      UcBasamak = TamSayi Mod 1000
      If UcBasamak <> 0 Then
        Uc = UcBasamak Mod 10
        Iki = (UcBasamak \ 10) Mod 10
        Bir = UcBasamak \ 100
        
        BinlikYazi = ""

        ' Yüzler basamağı
        If Bir > 0 Then
          BinlikYazi = Yuzler(Bir) & " "
        End If

        ' Onlar basamağı
        If Iki > 0 Then
          BinlikYazi = BinlikYazi & Onlar(Iki) & " "
        End If

        ' Birler basamağı
        If Uc > 0 Then
          ' Sadece birler basamağı 1 ise ve diğer basamaklar 0 ise (Grup = 0 koşulu ile 1, 1TL için "Bir" yazılır)
          If (Uc = 1) And (Iki = 0) And (Bir = 0) And (Grup = 0) Then
            BinlikYazi = BinlikYazi & Birler(Uc) & " "
          ElseIf Uc > 0 Then
            BinlikYazi = BinlikYazi & Birler(Uc) & " "
          End If
        End If

        ' Binler grubunu ekle ("Bin" kelimesinin tekrarlanmaması için kontrol)
        If Grup > 0 Then
          If (UcBasamak = 1) And (Grup = 1) Then
            ' 1000 için "Bir Bin" yazma, sadece "Bin" yaz
            BinlikYazi = Binler(Grup) & " "
          ElseIf UcBasamak > 0 Then
            ' Eğer binlik grupta sayı varsa (1'den büyükse), binlik yazıyı Binler() ile birleştir
            BinlikYazi = BinlikYazi & Binler(Grup) & " "
          End If
        End If

        ' Oluşturulan binlik yazıyı ana yazıya ekle
        Yazi = BinlikYazi & Yazi
      End If
      TamSayi = TamSayi \ 1000
      Grup = Grup + 1
    Loop
    Yazi = Yazi & ParaBirimi
  End If
  
  ' Kuruş 0'dan büyükse ekle
  If Kurus > 0 Then
    Yazi = Yazi & " " & Kurus & " " & KurusBirimi
  End If

  ParaOku = Yazi

End Function
Kullanıcı avatarı
Hamurcu
Mesajlar: 268
Kayıt: 06 Ağu 2012, 00:14
İşletim Sisteminiz: Windows 10/11 - Pardus Linux
LibreOffice Sürümü: 7.x

Re: Sayıları Para olarak Yazıya Çevirmek (Google AI Studio ile)

Mesaj gönderen Hamurcu »

Eğer siz de Google Gemini ile denemeler yapmak ve ihtiyacınız olan Basic makrolarını yazdırmak isterseniz adresi şöyle;

https://aistudio.google.com/
Cevapla