Sabtu, 03 Juli 2010

Fungsi Konversi Terbilang C#

Sudah lama sekali rasanya tidak memiliki semangat untuk belajar sesuatu yang baru mungkin dikarenakan kesibukan dan juga mungkin umur yang sudah mulai beranjak tua (hahahahahaa baru sadar sudah tidak muda lagi).

Langsung aja, kemarin iseng-iseng bongkar-bongkar kode-kode program lamaku dulu, salah satunya program "konversi terbilang" yang dulu saya buat dengan delphi ver 5 dan buat teman-teman delphier sekarang website resminya kalau nggak salah http://www.embarcadero.com, sebelumnya penulis mohon maaf karena sebetulnya ini adalah materi/topik yang sudah kadaluarsa bagi rekan-rekan programmer.

Ada perasaan pengen tahu aja apakah penulisan program yang dibuat penulis waktu jaman jadul bisa diterapkan dalam jaman sekarang akhirnya penulis mencoba mempelajari bahasa pemrograman yang penulis amati sedang beken saat ini " VISUAL STUDIO - C# " yang kalau tidak salah dikembangkan oleh Microsoft,.

Kembali ke konversi bilangan tadi, ternyata memang dari segi logika mungkin teman-teman bilang algoritma alur dalam bahasa delphi dengan bahasa pemrograman yang lain tidaklah berbeda yang membedakan hanyalah sintak dari masing-masing program tersebut.

Mungkin penulis akan memaparkan sekelumit dari contoh code program yang penulis buat menggunakan C# seperti hasil contoh didalam gambar diatas. Akan tetapi penulis mohon maaf apabila banyak kekurangannya karena untuk saat ini penulispun baru mempelajari C# tersebut ibarat bayi masih belajar merangkak...


using System;
using System.Collections.Generic;
using System.Text;

namespace cenkDll
{
public class fungsibilangan
{
string c1, c2, huruf, c;
char[] d;
public string C
{
set { this.c = value; }
get { return this.c; }
}

public string C1
{
set { this.c1 = value; }
get { return this.c1; }
}

public string C2
{
set { this.c2 = value; }
get { return this.c2; }
}

public string Huruf
{
set { this.huruf = value; }
get { return this.huruf; }
}

public string konversi(string karakter)
{
int i,a1,a2,a3;
string k,potong;
a1 = karakter.IndexOf(',');
a2 = karakter.IndexOf('.');
i = 0;
if ((a1 != 0) || (a2 != 0))
{
if (a1 > a2)
{
k = karakter.Substring(0, a1);
c = "";
for (i = 0; i < potong =" k.Substring(i," c =" c"> 1)
{
k = karakter.Substring(a1 + 1, 2);
}
else
{
k = karakter.Substring(a1 + 1, 1);
k = k + "0";
}
}
else
{
k = karakter;
c = "";
for (i = 0; i != k.Length; i++)
{
potong = k.Substring(i, 1);
if (potong != ",")
{
c = c + potong;
}
}
if ((k.Length) - a2 > 1)
{
k = karakter.Substring(a2 + 1, 2);
}
else
{
k = karakter.Substring(a2 + 1, 1);
k = k + "0";
}
}
}
else
{
c = karakter;
k = "00";
}

if (c.Length > 9)
{
a3 = c.Length;
i = 0;
while (i <= 8) { d[8 - i] = c[a3]; a3 = a3 - 1; i++; } for (i = 0; i <= 8; i++) { a3 = c.Length - 9; while (a3 > 0)
{
d[a3 - 1] = c[a3];
a3 = a3 - 1;
}
}
for (i = 0; i <= 8; i++) { c1 = c1 + d[i]; a1 = Int32.Parse(c1); a2 = Int32.Parse(c2); huruf = trilyunan(a1)+" "+jutaan(a2); } } else { a1 = Int32.Parse(c); huruf = jutaan(a1); } if ((k.Trim() != "00") & (k.Trim() != "0")) { if (huruf == "") { huruf = "Nol Koma"; huruf = huruf + " Koma " + koma(k); } } return huruf; } private string trilyunan(int angka) { string kata; int a, b; a = angka % 1000; b = (angka - a) / 1000; kata = ""; if (b > 0)
{
kata= ratusan(b)+" Trilyun "+ milyaran(a);
}
else
{
kata=milyaran(angka);
}
return kata;
}

private string milyaran(int angka)
{
string kata;
kata = " ";

if (angka > 0)
{
kata = ratusan(angka) + " Milyar";
}
else
{
kata = " ";
}
return kata;
}

private string jutaan(int angka)
{
string kata;
int a, b;
a = angka % 1000000;
b = (angka - a) / 1000000;
kata = " ";
if (b > 0)
{
kata = ratusan(b) + " Juta " + ribuan(a);
}
else
{
kata = ribuan(angka);
}
return kata;

}

private string ribuan(int angka)
{
string kata;
int a, b;
a = angka % 1000;
b = (angka - a) / 1000;
kata = " ";
if (b > 0)
{
if (b == 1)
{
kata = "Seribu " + ratusan(a);
}
else
{
kata = ratusan(b) + " Ribu " + ratusan(a);
}
}
else
{
kata = ratusan(angka);
}
return kata;
}

private string ratusan(int angka)
{
string kata;
int a, b;
a = angka % 100;
b = (angka - a) / 100;
kata = " ";
if (b > 0)
{
if (b == 1)
{
kata = "Seratus " + puluhan(a);
}
else
{
kata = satuan(b) + " Ratus " + puluhan(b);
}
}
else
{
kata = puluhan(angka);
}
return kata;
}

private string puluhan(int angka)
{
string kata;
int a, b;
a = angka % 10;
b = (angka - a) / 10;
kata = " ";
if (b > 0)
{
if (b == 1)
{
if (a == 0)
{
kata = "Sepuluh";
}
else
{
if (a == 1)
{
kata = "Sebelas";
}
else
{
kata = satuan(a) + " Belas";
}
}
}
else
{
kata = satuan(b) + " Puluh " + satuan(a);
}
}
else
{
kata = satuan(angka);
}
return kata;
}


private string satuan(int angka)
{
string kata;
kata = "";
switch (angka)
{
case 0: kata="";break;
case 1: kata="Satu";break;
case 2: kata="Dua";break;
case 3: kata="Tiga";break;
case 4: kata="Empat";break;
case 5: kata="Lima";break;
case 6: kata="Enam";break;
case 7: kata="Tujuh";break;
case 8: kata="Delapan";break;
case 9: kata="Sembilan";break;
}
return kata;
}

private string koma(string angka)
{
string kata;
kata = "";
int a, b;
kata = angka.Substring(0,1);
a = Int32.Parse(kata);
if (a == 0)
{
kata = "Nol";
}
else
{
kata = satuan(a);
}
a = Int32.Parse(angka);
b = a % 10;
a = (Int32.Parse(angka) - b) / 10;
kata=kata+" "+satuan(a);
return kata;
}
}





Demikian kira-kira dari fungsi konversi terbilang yang penulis coba implementasikan didalam C#, mohon maaf sebelumnya mungkin fungsi ini belum terlalu sempurna, untuk kesempurnaan teman-teman dapat melengkapinya , dan penulis informasikan bahwa fungsi konversi ini sudah dapat mendeiteksi format penulisan digit versi indonesia (xxx.xxx.xxx) ataupun versi inggris (xxx,xxxx,xxx), terimakasih

1 komentar:

Anonim mengatakan...

nice article