Jumat, 13 Juni 2014

Program konversi masehi ke hijriah

Kalender masehi sangat berbeda dengan kalender hijriah, karena perhitungan kalender masehi berdasarkan revolusi bumi, sedangkan kalender hijriah berdasarkan revolusi bulan. Dari perbedaan tersebut, maka tanggal pada kalender hijriah akan berbeda. Berikut ini adalah source code program bahasa C untuk mengkonversi kalender masehi ke hijriah.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

void main() {
// Deklarasikan dulu
int sts = 1;
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 {
int a, b, c, d, bulan, hari, tahun, hr, bln, thn;
char input[16];
char *tok;

// Beri judul programnya
printf("\n");
printf("PROGRAM KONVERSI MASEHI KE HIJRAH");
printf("\n\n");

// permintaan input
printf(" Masukkan tanggal masehi (hr/bln/thn): ");
scanf("%s",input);

//string dipilah2
tok=strtok(input,"/");
hr=atoi(tok);
tok=strtok(NULL,"/");
bln=atoi(tok);
tok=strtok(NULL,"/");
thn=atoi(tok);

printf("\n Tanggal yang Anda masukkan: %d - %s - %d\n", hr, gbulan[bln-1], thn);

// mulai konversi tanggal yang di input
if ((thn > 1582) || ((thn == 1582) && (bln > 10)) || ((thn == 1582) && (bln == 10)&& (hr > 14))) 
{
a=((1461 * (thn + 4800 + ((bln - 14) / 12))) / 4) + ((367 * (bln - 2 - 12 *(((bln - 14) / 12)))) / 12) - ((3 * (((thn + 4900 + ((bln - 14) / 12)) / 100)))/ 4) + hr - 32075;
else 
{
a= 367 * thn - ((7 * (thn + 5001 + ((bln - 9) / 7))) / 4) + ((275 * bln) / 9)+ hr + 1729777;
}

b=a - 1948440 + 10632;
c=((b - 1) / 10631);
b=b - 10631 * c + 354;
d=(((10985 - b) / 5316)) * (((50 * b) / 17719)) + ((b / 5670)) *(((43 * b) / 15238));
b=b-(((30 - d) / 15)) * (((17719 * d) / 50))-((d / 16)) * (((15238 * d)/ 43)) + 29;
bulan=((24 * b) / 709);
hari=b-((709 * bulan) / 24);
tahun=30 * c + d - 30;

// outputnya
printf(" Konversi ke Hijriyah menjadi: %d - %s - %d H\n\n", hari,cbulan[bulan-1], tahun);

// tanya pengulangan
printf(" menghitung lagi? (0=tidak; 1=ya): ");
scanf("%d",&sts);
if (sts==1); else printf("\n Tekan ENTER untuk keluar...");

} while(sts==1);

getch();
}

1 komentar: