Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.41 KB | None | 0 0
  1. //Tanggal   : 27-11-2014 sampai 28-11-2014
  2.  
  3. #include <iostream>
  4. #include <stdlib.h>
  5.  
  6. using namespace std;
  7.  
  8. void kataDariAngka(char);
  9. bool jikaAngka(string);
  10. void satuan(string, int);
  11. void puluhan(string, int, int);
  12. void ratusan(string, int, int, int);
  13.  
  14. string bil;
  15. int p_bil;
  16.  
  17. int main(){
  18.     int i, j, k, p3, p=0;
  19.     bool salah, nol;
  20.     char lagi;
  21.    
  22.     do{
  23.         system("cls");
  24.         salah = false;
  25.         nol = false;
  26.        
  27.         cout << "Masukkan bilangan bulat = ";
  28.         cin.sync(); cin.clear();
  29.         getline(cin, bil);
  30.        
  31.         p_bil = bil.length();
  32.        
  33.         if(jikaAngka(bil)){
  34.  
  35.             if(bil[0]=='0'){
  36.                 salah = true;
  37.             }
  38.             if(salah==false){
  39.                 if(p_bil>15){
  40.                     cout << "Jangan melebihi 999 trilyun 999 milyar 999 juta 999 ribu 999 !!" << endl;
  41.                 }else{
  42.                     if(p_bil%3==0){
  43.                         p3 = p_bil/3;
  44.                     }else{
  45.                         p3 = p_bil/3+1;
  46.                         p = p_bil%3;
  47.                     }
  48.                    
  49.                     for(i=p3; i>0; i--){
  50.                         if(p==1){
  51.                             satuan(bil, 0);
  52.                         }else if(p==2){
  53.                             puluhan(bil, 0, 1);
  54.                         }else{
  55.                             ratusan(bil, p_bil-(i*3), p_bil-(i*3)+1, p_bil-(i*3)+2);
  56.                             if(i>1 && bil[p_bil-(i*3)+3]=='0' && bil[p_bil-(i*3)+4]=='0' && bil[p_bil-(i*3)+5]=='0' && bil[p_bil-(i*3)]=='0' && bil[p_bil-(i*3)+1]=='0' && bil[p_bil-(i*3)+2]=='0'){
  57.                                 nol=true;
  58.                             }else if(i>1 && (bil[p_bil-(i*3)]!='0' || bil[p_bil-(i*3)+1]!='0' || bil[p_bil-(i*3)+2]!='0')){
  59.                                 nol=false;
  60.                             }
  61.                         }
  62.                         if(i==5){
  63.                             cout << "trilyun ";
  64.                         }else if(i==4 && nol==false){
  65.                             cout << "milyar ";
  66.                         }else if(i==3 && nol==false){
  67.                             cout << "juta ";
  68.                         }else if(i==2 && nol==false){
  69.                             cout << "ribu ";
  70.                         }
  71.                         p=0;
  72.                     }
  73.                     cout << endl;
  74.                 }
  75.             }else{
  76.                 cout << "Jangan gunakan nol di depan !!" << endl;
  77.             }
  78.         }else{
  79.             cout << "Inputan salah !!" << endl;
  80.         }
  81.        
  82.         cout << endl << "Ingin lagi? (Y/N) = ";
  83.         cin >> lagi;
  84.         cout << endl;
  85.     }while(lagi=='Y' || lagi=='y');
  86.    
  87.     return 0;
  88. }
  89.  
  90. void satuan(string bil, int s=0){
  91.     kataDariAngka(bil[s]);
  92. }
  93.  
  94. void puluhan(string bil=0, int p=0, int s=0){
  95.     if(bil[p]=='1' && bil[s]=='0'){
  96.         cout << "sepuluh ";
  97.     }else if(bil[p]=='1' && bil[s]=='1'){
  98.         cout << "sebelas ";
  99.     }else if(bil[p]=='1' && bil[s]>'1'){
  100.         kataDariAngka(bil[s]);
  101.         cout << "belas ";
  102.     }else if(bil[p]=='0'){
  103.         kataDariAngka(bil[s]);
  104.     }else{
  105.         kataDariAngka(bil[p]);
  106.         cout << "puluh ";
  107.         kataDariAngka(bil[s]);
  108.     }
  109. }
  110.  
  111. void ratusan(string bil, int r=0, int p=0, int s=0){
  112.     if(bil[r]=='1'){
  113.         cout << "seratus ";
  114.         puluhan(bil, p, s);
  115.     }else if(bil[r]=='0'){
  116.         puluhan(bil, p, s);
  117.     }else{
  118.         kataDariAngka(bil[r]);
  119.         cout << "ratus ";
  120.         puluhan(bil, p, s);
  121.     }
  122. }
  123.  
  124. void kataDariAngka(char c){
  125.     if(c=='1'){
  126.         cout << "satu";
  127.     }else if(c=='2'){
  128.         cout << "dua";
  129.     }else if(c=='3'){
  130.         cout << "tiga";
  131.     }else if(c=='4'){
  132.         cout << "empat";
  133.     }else if(c=='5'){
  134.         cout << "lima";
  135.     }else if(c=='6'){
  136.         cout << "enam";
  137.     }else if(c=='7'){
  138.         cout << "tujuh";
  139.     }else if(c=='8'){
  140.         cout << "delapan";
  141.     }else if(c=='9'){
  142.         cout << "sembilan";
  143.     }
  144.    
  145.     if(!(c=='0')){
  146.         cout << " ";
  147.     }
  148. }
  149.  
  150. bool jikaAngka(string cek){
  151.     bool berartiAngka=true;
  152.     int panjang=cek.length();
  153.  
  154.     if(panjang==0||cek[0]==' '){
  155.         berartiAngka=false;
  156.     }else{
  157.         for(int i=0;i<panjang;i++){
  158.             char x=cek[i];
  159.             if(x<'0'||x>'9'){
  160.                 berartiAngka=false;
  161.                 break;
  162.             }
  163.         }
  164.     }
  165.  
  166.     return berartiAngka;
  167. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement