Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Tanggal : 27-11-2014 sampai 28-11-2014
- #include <iostream>
- #include <stdlib.h>
- using namespace std;
- void kataDariAngka(char);
- bool jikaAngka(string);
- void satuan(string, int);
- void puluhan(string, int, int);
- void ratusan(string, int, int, int);
- string bil;
- int p_bil;
- int main(){
- int i, j, k, p3, p=0;
- bool salah, nol;
- char lagi;
- do{
- system("cls");
- salah = false;
- nol = false;
- cout << "Masukkan bilangan bulat = ";
- cin.sync(); cin.clear();
- getline(cin, bil);
- p_bil = bil.length();
- if(jikaAngka(bil)){
- if(bil[0]=='0'){
- salah = true;
- }
- if(salah==false){
- if(p_bil>15){
- cout << "Jangan melebihi 999 trilyun 999 milyar 999 juta 999 ribu 999 !!" << endl;
- }else{
- if(p_bil%3==0){
- p3 = p_bil/3;
- }else{
- p3 = p_bil/3+1;
- p = p_bil%3;
- }
- for(i=p3; i>0; i--){
- if(p==1){
- satuan(bil, 0);
- }else if(p==2){
- puluhan(bil, 0, 1);
- }else{
- ratusan(bil, p_bil-(i*3), p_bil-(i*3)+1, p_bil-(i*3)+2);
- 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'){
- nol=true;
- }else if(i>1 && (bil[p_bil-(i*3)]!='0' || bil[p_bil-(i*3)+1]!='0' || bil[p_bil-(i*3)+2]!='0')){
- nol=false;
- }
- }
- if(i==5){
- cout << "trilyun ";
- }else if(i==4 && nol==false){
- cout << "milyar ";
- }else if(i==3 && nol==false){
- cout << "juta ";
- }else if(i==2 && nol==false){
- cout << "ribu ";
- }
- p=0;
- }
- cout << endl;
- }
- }else{
- cout << "Jangan gunakan nol di depan !!" << endl;
- }
- }else{
- cout << "Inputan salah !!" << endl;
- }
- cout << endl << "Ingin lagi? (Y/N) = ";
- cin >> lagi;
- cout << endl;
- }while(lagi=='Y' || lagi=='y');
- return 0;
- }
- void satuan(string bil, int s=0){
- kataDariAngka(bil[s]);
- }
- void puluhan(string bil=0, int p=0, int s=0){
- if(bil[p]=='1' && bil[s]=='0'){
- cout << "sepuluh ";
- }else if(bil[p]=='1' && bil[s]=='1'){
- cout << "sebelas ";
- }else if(bil[p]=='1' && bil[s]>'1'){
- kataDariAngka(bil[s]);
- cout << "belas ";
- }else if(bil[p]=='0'){
- kataDariAngka(bil[s]);
- }else{
- kataDariAngka(bil[p]);
- cout << "puluh ";
- kataDariAngka(bil[s]);
- }
- }
- void ratusan(string bil, int r=0, int p=0, int s=0){
- if(bil[r]=='1'){
- cout << "seratus ";
- puluhan(bil, p, s);
- }else if(bil[r]=='0'){
- puluhan(bil, p, s);
- }else{
- kataDariAngka(bil[r]);
- cout << "ratus ";
- puluhan(bil, p, s);
- }
- }
- void kataDariAngka(char c){
- if(c=='1'){
- cout << "satu";
- }else if(c=='2'){
- cout << "dua";
- }else if(c=='3'){
- cout << "tiga";
- }else if(c=='4'){
- cout << "empat";
- }else if(c=='5'){
- cout << "lima";
- }else if(c=='6'){
- cout << "enam";
- }else if(c=='7'){
- cout << "tujuh";
- }else if(c=='8'){
- cout << "delapan";
- }else if(c=='9'){
- cout << "sembilan";
- }
- if(!(c=='0')){
- cout << " ";
- }
- }
- bool jikaAngka(string cek){
- bool berartiAngka=true;
- int panjang=cek.length();
- if(panjang==0||cek[0]==' '){
- berartiAngka=false;
- }else{
- for(int i=0;i<panjang;i++){
- char x=cek[i];
- if(x<'0'||x>'9'){
- berartiAngka=false;
- break;
- }
- }
- }
- return berartiAngka;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement