RSS

Konversi tahun Masehi ke-Hijriah dengan C++

Ketemu lagi gan dalam posting kali ini saya akan memberikan source code konversi tahun masehi ke hijriah dan dari tahun hijriah ke tahun masehi dengan C++. Program yang saya posting ini sudah di uji coba gan so pasti bisa dijalankan 100%, program ini simpel gan gak perlu ribet-ribet. Nah ini ne source codenya kayak gini gan :

===================================================
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

int main() {
    system ("color 2");

int sts;
char *cbulan[] = {"Muharram","Safar","Rabiul Awal","Rabiul Akhir","Jamadil Awal",
"Jamadil Akhir","Rejab","Syaaban","Ramadhan","Syawal","Zulkaedah","Zulhijjah"};
char *gbulan[] = {"Januari","Februari","Maret","April","Mei","Juni","Juli",
"Agustus","September","Oktober","November","Desember" };

do {
    system("cls");
    int zjd, zl, zn, zj,zi,zk, bulan, hari, tahun, tgl, bln, thn,pilih;
    char input[16];
    char *tok;

    cout<<""<<endl;
    cout<<"                    SELAMAT DATANG DIAPLIKASI KONVERSI TAHUN"<<endl;
    cout<<"               +----------------------------------------------+"<<endl;
    cout<<"                "<<endl;
    cout<<"                   |\\___/|"<<endl;
    cout<<"                   )o   o(      ...:: HAMZAH :::..."<<endl;
    cout<<"                  =\\  - /=       "<<endl;
    cout<<"                    )===(   Menu Pilihan Konversi yang disediakan: "<<endl;
    cout<<"                   /     \\  1. Dari Masehi ke-Hijriah."<<endl;
    cout<<"                  |      |  2. Dari Hijrih ke-Masehi."<<endl;
    cout<<"                  /       \\ 3. Daftar urutan tahun hijriah."<<endl;
    cout<<"                  \\   x   /"<<endl;
    cout<<"                   \\_____/"<<endl;
    cout<<"                "<<endl;
    cout<<"               +----------------------------------------------+"<<endl<<endl;
    cout<<" Masukkan Pilihan anda: ";
    cin>>pilih;

    switch(pilih){
        case 1:
            cout<<" Masukkan tanggal masehi (tgl/bln/thn): ";
            cin>>input;

            tok=strtok(input,"/");
            tgl=atoi(tok);
            tok=strtok(NULL,"/");
            bln=atoi(tok);
            tok=strtok(NULL,"/");
            thn=atoi(tok);

            cout<<" Tanggal yang Anda masukkan: "<< tgl<<" "<<gbulan[bln-1]<<" "<<thn<<endl;
          
      
            if ((thn > 1582) || ((thn == 1582) && (bln > 10)) || ((thn == 1582) && (bln == 10)
                && (tgl > 14))) {
                    zjd=((1461 * (thn + 4800 + ((bln - 14) / 12))) / 4) + ((367 * (bln - 2 - 12 *
                        (((bln - 14) / 12)))) / 12) - ((3 * (((thn + 4900 + ((bln - 14) / 12)) / 100)))
                        / 4) + tgl - 32075;
            } else {
                zjd= 367 * thn - ((7 * (thn + 5001 + ((bln - 9) / 7))) / 4) + ((275 * bln) / 9)
                    + tgl + 1729777;
            }

            zl=zjd - 1948440 + 10632;
            zn=((zl - 1) / 10631);
            zl=zl - 10631 * zn + 354;
            zj=(((10985 - zl) / 5316)) * (((50 * zl) / 17719)) + ((zl / 5670)) *(((43 * zl) / 15238));

            zl=zl-(((30 - zj) / 15)) * (((17719 * zj) / 50))-((zj / 16)) * (((15238 * zj) / 43)) + 29;
            bulan=((24 * zl) / 709);
            hari=zl-((709 * bulan) / 24);
            tahun=30 * zn + zj - 30;

            cout<<" Konversi ke Hijriyah menjadi: "<< hari<<" "<< cbulan[bulan-1]<<" "<< tahun<<endl<<endl;

            break;
          
        case 2:

            cout<<" Masukkan tanggal hijriah (tgl/bln/thn): ";
            cin>>input;

            tok=strtok(input,"/");
            tgl=atoi(tok);
            tok=strtok(NULL,"/");
            bln=atoi(tok);
            tok=strtok(NULL,"/");
            thn=atoi(tok);

            cout<<"\n Tanggal yang Anda masukkan: "<< tgl<<" "<<cbulan[bln-1]<<" "<<thn<<endl;
          
            zjd=((11*thn+3)/30)+354*thn+30*bln-((bln-1)/2)+tgl+1948440-385;
            if (zjd>2299160){
                    zl=zjd+68569;
                    zn=((4*zl)/146097);
                    zl=zl-((146097*zn+3)/4);
                    zi=((4000*(zl+1))/1461001);
                    zl=zl-((1461*zi)/4)+31;
                    zj=((80*zl)/2447);
                    hari=zl-((2447*zj)/80);
                    zl=(zj/11);
                    bulan=zj+2-12*zl;
                    tahun=100*(zn-49)+zi+zl;
            }else{
                zj=zjd+1402;
                zk=((zj-1)/1461);
                zl=zj-1461*zk;
                zn=((zl-1)/365)-(zl/1461);
                zi=zl-365*zn+30;
                zj=((80*zi)/2447);
                hari=zi-((2447*zj)/80);
                zi=(zj/11);
                bulan=zj+2-12*zi;
                tahun=4*zk+zn+zi-4716;
          
            }cout<<" Konversi ke Masehi menjadi: "<<hari<<" "<<gbulan[bulan-1]<<" "<<  tahun<<endl<<endl;

            break;

    case 3:
            cout<<""<<endl;
            cout<<" 1.Muharram,       2.Safar,           3.Rabiul Awal,   4.Rabiul Akhir"<<endl;
            cout<<" 5.Jamadil Awal,   6.Jamadil Akhir,   7.Rejab,         8.Syaaban"<<endl;
            cout<<" 9.Ramadhan,      10.Syawal,         11.Zulkaedah,    12.Zulhijjah"<<endl<<endl;
          
            break;

    default:
        cout<<" Maaf pilihan salah"<<endl;
        getch();
        break;
  
    }
  
        cout<<" Untuk kembali tekan 1 dan keluar tekan 0: ";
        cin>>sts;
        if (sts==1) system("cls");
        else cout<<"\n Tekan ENTER untuk keluar...";
} while(sts==1);

getch();

}
==================================================
Nambah lagi ne gan kalo tu program ada yang eror di bagian <iostream> ditambah menjadi <iostream.h> oke gan semoga bermanfaat *_*.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 komentar:

Posting Komentar