Monday 6 April 2015

JAVA:: Program Konversi Bilangan Bulat / Desimal ke Romawi



Deskripsi :

Bilangan Romawi adalah bilangan unik yang memiliki aturan-aturan yang berlaku dan terdiri dari huruf-huruf CAPITAL seperti I, X, C, M, V, L, dan v. Di Indonesia bilangan ini sangat jarang digunakan sekali, tapi untuk hal-hal tertentu saja. Pada dasarnya, bilangan Romawi memiliki bilangan dasar dan maksimal perulangan ganda pada huruf-huruf dalam suatu angka yaitu 3. Misal XXX = 30 bukan XXXX=40.
Pada dasarnya adapun aturan dari bilangan romawi tersebut adalah sebagai berikut :
  • Angka romawi memiliki arti : I = 1 , V = 5, X = 10, L = 50, C = 100, D = 500, M = 100.
  • Romawi tidak mengenal 4 buah symbol yang di lakukan secara berurutan. Misal, IIII itu seharusnya IV, XXXX seharusnya LX, dsb.
  • Lambang romawi seperti IV, MC, CD, dsb, memiliki ciri khas yaitu Simbol pertama memiliki nilai Lebih Kecil dari pada simbol kedua.
  • Jika ditemukankondisi nomor 3 maka pembacaanya adalah lambang kedua dikurangi lambang pertama.
  • Jika ditemukan Lambang seperti contoh pada nomor 3 maka yang di bandingkan maju 2 langkah, misal: CMII pertama-tama kita bandingkan karakter pertama dan kedua dahulu yaitu C dan M. C memiliki nilai yang kurang dari M. Selanjutnya, kita membandingkan I dengan I bukan M dengan I.
  • Berdasarkan nomor 4 dan 5 diperoleh pembacaan bila CMII maka akan dibaca M – C + I + I.
  • Jika kondisi Lambang Kedua Lebih besar dari pada lambang pertama, maka pembacaan tinggal dijumlahkan saja misal: MVII maka M + V + I + I.

Source code Program :

  1. int bil;  
  2. String tampil="";  
  3.   
  4. //inisialisasi berupa array  
  5. String [] biasa = {"","I","II""III""IV""V",  
  6.                "VI""VII""VIII""IX"};  
  7. String [] sepuluh = {"""X""XX","XXX","XL"};  
  8. String [] limapuluh = {"""L""LX""LXX""LXXX","XC"};  
  9. String [] seratus =  {"""C""CC""CCC""CD"};  
  10. String [] limaratus = {"""D""DC""DCC""DCCC""CM"};  
  11. String [] seribu =   {"""M""MM""MMM""Mv""v"};  
  12.   
  13. // inputan dari keyboard  
  14. System.out.print("Masukkan bilangan desimal : ");  
  15. Scanner obj = new Scanner(System.in);  
  16. bil = obj.nextInt();  
  17.   
  18. //kondisi dimana angka tdk lebih dari 5000  
  19. if (bil>5000)  
  20. {  
  21.   System.out.println("Maaf.., Angka Desimal Yang Di "+  
  22.   "Inputkan Harus Di Bawah 5000");  
  23.   
  24. }  
  25. else  
  26. {  
  27.   //defenisi  
  28.   int lmrts = bil % 1000;  
  29.   int srts = lmrts % 500;  
  30.   int lmpl = srts % 100;  
  31.   int spl = lmpl % 50;  
  32.   int ak = spl % 10;  
  33.   
  34.   int a = bil/1000;  
  35.   tampil += ""+seribu[a];  
  36.   
  37.   //aturan konversi desimal ke romawi  
  38.   if ( (lmrts >=900) && (lmrts <= 999))  
  39.   {  
  40.     tampil += "CM";  
  41.   
  42.     //90  
  43.     if( (lmpl >= 90) && (lmpl <= 99) )  
  44.     {  
  45.       tampil += "XC";  
  46.       int f= ak/1;  
  47.       tampil += ""+biasa[f];  
  48.     }  
  49.     else  
  50.     {  
  51.       int d = lmpl/50;  
  52.       tampil += ""+limapuluh[d];  
  53.       int e = spl/10;  
  54.       tampil += ""+sepuluh[e];  
  55.       int f= ak/1;  
  56.       tampil += ""+biasa[f];  
  57.      }  
  58.   
  59.     }  
  60.     else  
  61.     {  
  62.       int b = lmrts/500;  
  63.       tampil += ""+limaratus[b];  
  64.   
  65.       //400  
  66.       if ( (srts >= 400)&& (srts <= 499) )  
  67.       {  
  68.         tampil += "CD";  
  69.   
  70.         //90  
  71.         if( (lmpl >= 90) && (lmpl <= 99) )  
  72.         {  
  73.           tampil += "XC";  
  74.           int f= ak/1;  
  75.           tampil += ""+biasa[f];  
  76.         }  
  77.         else  
  78.         {  
  79.           int d = lmpl/50;  
  80.           tampil += ""+limapuluh[d];  
  81.           int e = spl/10;  
  82.           tampil += ""+sepuluh[e];  
  83.           int f= ak/1;  
  84.           tampil += ""+biasa[f];  
  85.         }  
  86.   
  87.       }  
  88.       else  
  89.       {  
  90.          int c = srts/100;  
  91.          tampil += ""+seratus[c];  
  92.          if((lmpl >= 90)&&(lmpl <= 99))  
  93.          {  
  94.            tampil += "XC";  
  95.            int f= ak/1;  
  96.            tampil += ""+biasa[f];  
  97.          }  
  98.          else  
  99.          {  
  100.            int d = lmpl/50;  
  101.            tampil += ""+limapuluh[d];  
  102.            int e = spl/10;  
  103.            tampil += ""+sepuluh[e];  
  104.            int f= ak/1;  
  105.            tampil += ""+biasa[f];  
  106.          }  
  107.      }  
  108.  }  
  109.  System.out.println("Maka angka Romawinya "+tampil);  
  110.   
  111. }  
  112.   
  113. }  
  114. }  

Output Program :


No comments:

Post a Comment