Anda di halaman 1dari 28

i

LAPORAN
PROGRAM KALENDER

Laporan Ini Diajukan Untuk Memenuhi Salah Satu Nilai Mata Kuliah Project 1

Disusun Oleh :

Indra Permana 101511013


Keukeu Anggarani P 101511015
M. Taufik Hidayat 101511019
Nisa Azmi D. 101511021

KELOMPOK A3

Manager : Jonner Hutahaean, BSET

Jurusan Teknik Komputer dan Informatika Politeknik Negeri Bandung


2010/2011
i

KATA PENGANTAR

Puji syukur kami panjatkan ke hadirat Allah SWT karena berkat Rahmat-Nya, kami
dapat menyelesaikan Laporan Akhir Program Kalender ini tepat pada waktunya. Laporan ini
membahas tentang definisi, konsep, algoritma program Kalender, serta kesimpulan dan saran
dalam pembuatan program Kalender.

Kami mengucapkan terima kasih khususnya kepada Bapak Jonner H. selaku manager
project kelompok kami yang telah membimbing kami dalam membuat Program Kalender ini,
manajer-manajer kelompok yang lain serta pihak-pihak lain yang tidak dapat kami sebutkan
satu per satu.

Kami menyadari bahwa Program Kalender yang telah kami buat ini masih jauh dari
kata sempurna, oleh karena itu kami mengharapkan kritik dan saran dari pembaca untuk
memperbaiki isi laporan ini maupun untuk memperbaiki program yang telah kami buat.
Semoga laporan ini dapat bermanfaat bagi siapapun yang membacanya.

Bandung, Desember 2010

Kelompok A3
DAFTAR ISI

KATA PENGANTAR...............................................................................................................i

DAFTAR ISI.............................................................................................................................ii

DAFTAR GAMBAR...............................................................................................................iv

..................................................................................................................................................iv

DAFTAR TABEL.....................................................................................................................v

BAB I.........................................................................................................................................6

SPESIFIKASI PROGRAM.....................................................................................................6

1.1Definisi Program Kalender.............................................................................6

1.2Spesifikasi Program Kalender........................................................................6

1.2.1Fitur/Layanan Program......................................................................6

1.2.2Kebutuhan Data dan Kamus Data.....................................................7

1.2.3Format Tampilan Input/Output..........................................................9

1.2.4Batasan dan Asumsi Program ...........................................................9

1.3Deskripsi Modul dan Algoritma....................................................................11

1.3.1Deskripsi Modul...............................................................................11

1.3.2Algoritma.........................................................................................11

BAB II.....................................................................................................................................16

PROSES PENGEMBANGAN..............................................................................................16

2.1Perancangan Program.................................................................................16

2.2Penyelesaian Masalah..................................................................................16

2.3 Langkah – Langkah Pengerjaan..................................................................17

2.4Evaluasi Dan Hasil.......................................................................................19

BAB III....................................................................................................................................20

KESIMPULAN DAN SARAN..............................................................................................20

ii
3.1Kesimpulan..................................................................................................20

3.2Saran...........................................................................................................20

DAFTAR PUSTAKA.............................................................................................................21

TAMPILAN PROGRAM......................................................................................................22

SOURCE CODE ....................................................................................................................24

iii
DAFTAR GAMBAR

Gambar 1 Tampilan utama...................................................................................................22

Gambar 2 Tampilan input tanggal/bulan/tahun.................................................................22

Gambar 3 Tampilan input berapa hari yang diinginkan...................................................23

Gambar 4 Tampilan hasil penghitungan hari, tanggal, bulan dan tahun........................23

iv
DAFTAR TABEL

Tabel 1 Kamus Data.................................................................................................................7

Tabel 2 Deskripsi Modul.......................................................................................................11

v
6

BAB I
SPESIFIKASI PROGRAM

1.1 Definisi Program Kalender

Program kalender merupakan sebuah program yang digunakan untuk melakukan


perhitungan pertambahan hari,tanggal, bulan dan tahun. Program kalender ini adalah
program yang berbasis text yang menggunakan compiler c++.

Program Kalender ini dibuat untuk menghitung hari, tanggal, bulan dan tahun sesuai
dengan permintaan dari user. Saat pertama kali program ini dijalankan akan muncul
pertanyaan tanggal, bulan, dan tahun berapa saat ini. Kemudian akan muncul pertanyaan
berapa hari yang diinginkan. Maksudnya adalah berapa hari kedepan yang diinginkan
atau hari berapa hari sebelum hari ini yang diinginkan. Program ini akan menghitung
pertambahan atau pengurangan yang diminta oleh user. Dan kemudian akan di outputkan.

1.2 Spesifikasi Program Kalender

Spesifikasi Program Kalender dapat dibagi menjadi 4 bagian yakni Fitur/layanan


Program, Kebutuhan Data, Format Tampilan Input/Output dan Asumsi/Batasan Program.

1.2.1 Fitur/Layanan Program

Program kalender ini hanya memiliki dua fitur yaitu menghitung


pertambahan hari yang diinputkan oleh user dan menghitung pengurangan hari
yang diinputkan oleh user.
7

1.2.2 Kebutuhan Data dan Kamus Data

Tabel berikut berisi Kebutuhan Data dan Kamus Data dalam program
Kalender :

Tabel 1 Kamus Data

NAMA TIPE
NO KETERANGAN DIPAKAI DI …
VARIABEL VARIABEL

1 bln Array of Digunakan untuk Konversi bulan


string dengan menampung data dari integer
12 elemen nama-nama bulan menjadi string
yang akan di
outputkan

2 tgl Integer Digunakan sebagai • Input tanggal


penampung tanggal
saat itu yang inputkan • Penghitungan
oleh user perubahan
tanggal,bulan,
dan tahun

• Output tanggal

3 month Integer Digunakan sebagai • Input bulan


penampung bulan saat
itu yang inputkan oleh • Penghitungan
user perubahan
tanggal,bulan,
dan tahun

• Output bulan

4 year Integer Digunakan sebagai • Input tahun


penampung tahun saat
itu yang inputkan oleh • Validasi tahun
user
8

kabisat

• Penghitungan
perubahan
tanggal,bulan,
dan tahun

• Output tahun

5 add Integer Digunakan untuk • Input


menampung inputan pertambahan
penambahan hari hari
yang diinginkan oleh
user • Penghitungan
perubahan
tanggal,bulan,
dan tahun

6 d Integer Digunakan untuk Pengurangan


menampung hasil month-1, karena
perhitungan array of char
untuk
menampung
nama bulan
dimulai dari 0,
bukan 1.

7 status boolean Digunakan untuk Validasi tahun


menampung hasil kabisat dari
pengecekan ke-valid- inputan year
an tahun kabisat dari
inputan year

8 jml_day Array of Digunakan untuk Penghitungan


integer menampung data perubahan
dengan 12 jumlah hari pada tanggal, bulan
elemen setiap bulan dan tahun

9 amount Integer Digunakan sebagai Penghitungan


parameter input perubahan
berdasarkan var. add tanggal, bulan
dan tahun

10 y Integer Digunakan sebagai Penghitungan


parameter output perubahan
berdasarkan var. year tanggal, bulan
dan tahun
9

11 m Integer Digunakan sebagai Penghitungan


parameter output perubahan
berdasarkan var. tanggal, bulan
month dan tahun

12 date Integer Digunakan sebagai Penghitungan


parameter output perubahan
berdasarkan var. tanggal, bulan
dan tahun

13 hari Array of Digunakan sebagai Konversi bulan


string berisi 7 penampung data dari integer
elemen nama-nama hari menjadi string
dalam 1 minggu

14 thn Integer Digunakan sebagai Penghitungan


parameter input hari
berdasarkan var. year

15 bln Integer Digunakan sebagai Penghitungan


parameter input hari
berdasarkan var.
month

16 tgl Integer Digunakan sebagai Penghitungan


parameter input hari
berdasarkan var. tgl

17 total Integer Digunakan sebagai Penghitungan


penampung hasil hari
untuk menentukan
hari

1.2.3 Format Tampilan Input/Output

Berikut ini tampilan input / ouput dalam Program Kalender (Lampiran 2


Tampilan Input Output Program Kalender).

1.2.4 Batasan dan Asumsi Program

Program Kalender memiliki beberapa batasan dan Asumsi, yakni :

• Input tanggal, bulan, dan tahun hanya bisa menggunakan angka


10

• Penambahnya harus dalam bentuk hari. Tidak bisa menggunakan


minggu, bulan, atau tahun.

• Tahun minimal dalam program kalender ini adalah tahun 1900


11

1.3 Deskripsi Modul dan Algoritma

1.3.1 Deskripsi Modul

Deskripsi Modul yang akan digunakan dalam Program Kalender dapat dilihat
dari tabel berikut ini :

Tabel 2 Deskripsi Modul

Modul
Deskripsi Modul yang
Nama Modul yang
Modul memanggil
dipanggil

cek_tahun Modul ini rubah_thn_bln_tgl -


adalah fungsi
untuk hitung_hari
memeriksa
status tahun.
Apakah tahun
kabisan atau
bukan kabisat

rubah_thn_bln_tgl Modul ini Main cek_tahun


merupakan
procedure
untuk
menghitung
pertambahan
atau
pengurangan
tangal,bulan
dan tahun

hitung_hari Modul ini Main cek_tahun


merupakan
fungsi untuk
menghitung
hari dan nilai
kembalianny
a adalah
string

1.3.2 Algoritma

Algoritma dari Modul-Modul diatas ditulis sebagai berikut :

MODUL “cek_tahun”
Function cek_tahun year : integer) : boolean
12

// DESKRIPSI : Modul untuk memeriksa status tahun kabisat atau


bukan kabisat
// MODUL YANG MEMANGGIL : rubah_thn_bln_tgl dan hitung_hari
// MODUL YANG DIPANGGIL : -

/*Deklarasi Variabel Lokal*/


status : boolean

Begin
status ← F

if (year mod 400=0 or year mod 4=0 and year mod 100 ≠ 0)
then

status = T
endif

return(status)
EndFunction

MODUL “rubah_thn_bln_tgl”
Procedure rubah_thn_bln_tgl(y,m,amount,date : integer)
// DESKRIPSI : Modul untuk menghitung pertambahan tahun, bulan,
dan tanggal
// MODUL YANG MEMANGGIL : Main
// MODUL YANG DIPANGGIL : cek tahun

/*Deklarasi Variabel Lokal*/

i,x,jml_day[12]: integer

Begin

jml_day[0] ← 31
if (cek_tahun(y)= T)
then

jml_day[1] ← 29
else

jml_day[1] ← 28

endif
jml_day[2] ← 31
jml_day[3] ← 30
jml_day[4] ← 31
jml_day[5] ← 30
jml_day[6] ← 31
jml_day[7] ← 31
jml_day[8] ← 30
jml_day[9] ← 31
jml_day[10] ← 30
jml_day[11] ← 31

if(amount>0)
then
13

i← 1
x← amount
while(i≤amount)
do

date← date+1
if(date>jml_day[m] and x>0)
then

m← m+1
if(m>11)
then

m← 0
y← y+1
if(cek_tahun(y)=T)
then

jml_day[1] ← 29
endif
endif
date← 1
endif
x--
i++
endwhile

else if(amount<0)
then

while(amount≠0)
do
date← date-1
if(date<1 and amount<0)
then

m← m-1
if(m<0)
then

m← 11
y← y-1
if(cek_tahun(y)=T)
then

jml_day[1]=29
endif
endif
date← jml_day[m]
then
amount++
endwhile
endif
endif
EndFunction

MODUL “hitung_hari”
14

Function hitung_hari (thn,bln,tgl : integer) : string


// DESKRIPSI : Modul untuk menghitung hari
// MODUL YANG MEMANGGIL : Main
// MODUL YANG DIPANGGIL : cek_tahun
/*Deklarasi Variabel Lokal*/
total : integer
hari[7] : string

Begin
hari[0] ← "Senin"
hari[1] ← "Selasa"
hari[2] ← "Rabu"
hari[3] ← "Kamis"
hari[4] ← "Jumat"
hari[5] ← "Sabtu"
hari[6] ← "Minggu"

total← 0
i← 1900
while(i<thn)
do
if(cek_tahun(i)=.T.)
then
total← total+366
else

total=total+365
endif
i++
endwhile
i← 0
while(i<bln)
do
if(i=2 or i=4 or i=6 or i=7 or i=9 or i=11)
then

total← total+31
else
if (i=0 or i=3 or i=5 or i=8 or i=10)

total← total+30;

else
if (i=1 and thn mod 400=0 or thn mod 4=0 and thn mod
100≠0)

total← total+29

else

total← total+28
endif
endif
endif
i++
endwhile

if(bln>0)
15

then
total← total+tgl
else
total← total+tgl-1
endif
total=total mod 7
i=0;
while(i<=6)
do
if(i=total)
then
return(hari[i])
endif
i++
endwhile
endif
16

BAB II
PROSES PENGEMBANGAN

2.1 Perancangan Program

Pada tanggal 15 November 2010, kami diberikan tugas Project 1 topik ke-3,
yaitu membuat program kalender. Awalnya kami berdiskusi mengenai program yang
bagaimana yang kami inginkan. Kemudian kami menentukan membuat program
kalender yang dibuat untuk mempermudah penghitungan hari, tanggal, bulan, dan
tahun. Dengan input hari,tanggal,bulan dan tahun dalam angka. Kami juga
mendiskusikan input pertambahan atau pengurangannya dalam satuan hari karena hari
merupakan satuan terkecil dari kalender. program ini diharuskan tidak hanya dapat
menghitung untuk 1 tahun saja, namun harus mampu menghitung beberapa tahun
kedepan atau beberapa tahun kebelakang

2.2 Penyelesaian Masalah

Setelah menentukan program yang akan dibuat kami memfokuskan strategi


penyelesaian masalahnya. Untuk membuat program kalender yang kami inginkan
harus terdapat input hari,tanggal,bulan, dan tahun. kemudian harus terdapat input
untuk pertambahannya yang telah kami tentukan satuannya yaitu dalam satuan hari.
Jika pertambahannya lebih dari nol dan apabila tanggal ditambahkan dengan
input pertambahannya tidak lebih dari jumlah hari dari bulan yang diinputkan maka
perhitungannya sederhana, hanya menambahkan tanggal dan input pertambahannya
dan bulannya tidak berubah, tetap seperti yang diinputkan. Kemudian kami
mendapatkan masalah baru yaitu jika hasil dari pertambahan tanggal dan input
pertambahan lebih dari jumlah hari dalam bulan yang diinputkan. Akhirnya kami
menemukan cara untuk menyelesaikan masalah ini yaitu dengan cara mengurangi
jumlah hari dalam bulan yang diinputkan dengan tanggal yang diinputkan, jika
pertambahannya melebihi sisa pegurangan tersebut maka maju ke bulan berikutnya,
contoh input tanggal=09, bulan=01, tahun=2011,input pertambahan=70, maka
perhitungan nya adalah sebagai berikut: 31 – 9 = 22 jumlah hari bulan 1 adalah 31
kemudian dikurangi tanggal yang diinputkan maka sisa hari menuju bulan
17

selanjutnya adalah 22 hari lagi. 70 – 22 = 48 jumlah input pertambahan dikurangi sisa


hari dari bulan 1 adalah 48, di sini bulan bertambah 1 menjadi bulan 2. Karena sisa
pengurangan lebih dari jumlah hari bulan 2 maka perhitungan belum selesai. 48 – 28
= 20 sisa dari proses perhitungan tadi kemudian dikurangi jumlah hari dalam bulan 2
hasilnya adalah 20. Karena sisanya tidak melebihi jumlah hari dalam bulan 2 maka
tanggalnya menjadi 20 dan bulannya menjadi 2, sedangkan tahun tetap.
Jika bulannya sudah melebihi 12 maka akan dilakukan pergantian tahun.
Disini kami mendapat masalah baru yaitu terdapat tahun kabisat. Maka harus
diperiksa saat terjadi pergantian tahun apakah tahun tersebut kabisat atau bukan
kabisat. Penentuan tahun kabisat ini kami dapatkan setelah kami membaca artikel-
artikel yang ada di internet. Awalnya kami mengetahui untuk menentukan tahun
kabisat adalah jika tahun habis dibagi 4, maka tahun tersebut adalah tahun kabisat.
Namun, suatu artikel kami membaca bahwa ternyata untuk mengecek suatu tahun
merupakan tahun kabisat atau bukan, tidak bisa hanya dengan penentuan tahun yang
habis dibagi 4 saja. Tahun harus dibagi terlebih dulu dengan 100. Jika tidak ada sisa,
dibagi dengan 400. Jika dibagi 400 habis maka tahun tersebut adalah tahun kabisat.
Jika tidak habis maka bulan tersebut bukan tahun kabisat. Jika tahun tidak habis
dibagi 100 namun habis dibagi 4, maka dikategorikan sebagai tahun kabisat.

2.3 Langkah – Langkah Pengerjaan

Langkah awal kami setelah tugas diberikan adalah mulai mendiskusikan


bagaimana program yang akan kami buat. Sebetulnya yang kami bayangkan untuk
membuat program ini adalah hanya proses menjumlahkan atau mengurangkan.
Namun, saat kami harus menuangkannya dalam algoritma, kami merasa kesulitan.
Oleh karena itu, kami mencari referensi bagaimana membuat program kalender
melalui internet.
Langkah selanjutnya, kami sepakat membuat program yang dapat digunakan
untuk mengetahui hari, tanggal, bulan dan tahun setelah dilakukan proses
penambahan. Kami menyamakan persepsi mengenai input, proses, dan output dari
program yang akan kami buat. Setelah itu, kami menentukan bagaimana proses untuk
menentukan hari, tanggal, bulan dan tahun setelah dilakukan penambahan hari yang
diinputkan sesuai keinginan user. Kami menggunakan patokan hari karena dalam
kalender, hari adalah satuan terkecil setelah, tanggal, bulan, dan tahun.
18

Setelah itu, kami membagi pengerjaan program dalam beberapa modul, yaitu
modul untuk menentukan perubahan hari, modul untuk menentukan perubahan
tanggal, modul untuk menentukan perubahan bulan, dan modul untuk menentukan
perubahan tahun. Kami berpendapat bahwa pembagian pengerjaan dengan
menggunakan modul akan mempermudah pekerjaan kami karena kami hanya tinggal
memanggil modul-modul tersebut dari main program. Namun, kenyataannya kami
justru mendapat masalah. Saat mengerjakan setiap modul-modul tersebut, kami
kesulitan menentukan algoritmanya, karena jika kami mengerjakan satu modul, modul
tersebut tidak bisa saling berhubungan dengan modul yang lain.
Setelah itu, kami membagi pengerjaan program dalam beberapa modul, yaitu
modul untuk menentukan perubahan hari, modul untuk menentukan perubahan
tanggal, modul untuk menentukan perubahan bulan, dan modul untuk menentukan
perubahan tahun. Kami berpendapat bahwa pembagian pengerjaan dengan
menggunakan modul akan mempermudah pekerjaan kami karena kami hanya tinggal
memanggil modul-modul tersebut dari main program. Namun, kenyataannya kami
justru mendapat masalah. Saat mengerjakan setiap modul-modul tersebut, kami
kesulitan menentukan algoritmanya, karena jika kami mengerjakan satu modul, modul
tersebut tidak bisa saling berhubungan dengan modul yang lain. Misalnya modul
untuk menentukan perubahan bulan, kami membutuhkan modul perubahan tanggal
untuk menentukan perubahan bulan. Sedangkan jika modul perubahan bulan ini
memanggil modul perubahan tanggal, prosesnya menjadi tidak saling berhubungan.
Begitu pun saat pengerjaan modul tahun dan hari. Jika kami menggabungkan dengan
modul lainnya, maka modul-modul tersebut akan menjalankan sesuai proses yang ada
pada masing-masing modul. Dengan kata lain, walaupun modul-modul tersebut dapat
dijalankan, tapi perubahan yang dihasilkan dari modul-modul tersebut tidak
mempengaruhi perubahan modul lain seperti yang kami harapkan (yaitu ketika hari
berubah, maka tanggal akan berubah, jika tanggal melebihi jumlah hari sesuai bulan
yang diinputkan user, maka bulan akan berubah, dan jika bulan melebihi bulan
desember, maka tahun akan bertambah)
Selanjutnya, kami masih mencoba melanjutkan pengerjaan modul-modul
tersebut. Kami mencoba menggabungkan modul tanggal dan bulan, sedangkan modul
tahun tetap dikerjakan pada satu modul, sementara modul hari tidak kami kerjakan
dahulu.
19

Akhirnya, kami menyadari bahwa pembuatan program kami salah jika


dikerjakan dengan pembagian modul-modul seperti itu. Lalu, kami memutuskan
untuk membuat program kami dengan 3 modul saja, yaitu modul untuk memvalidasi
status tahun, apakah tahun yang diujikan merupakan tahun kabisat atau bukan, modul
untuk merubah tanggal, bulan dan tahun setelah dilakukan penambahan hari, dan
modul untuk menghitung hari.
2.4 Evaluasi Dan Hasil

Dalam proses pembuatan program ini kami mengalami beberapa kendala dan
juga terdapat beberapa kesalahan. Kami melakukan beberapa kali evaluasi. Beberapa
masalah yang kami hadapi diantaranya adalah perhitungan tanggal dan bulan hanya
berlaku untuk satu tahun dan terjadi unterminate loop saat menjalankan program,
kemudian akhirnya kami menyadari bahwa perhitungan tanggal, bulan, dan tahun
saling berkaitan, dan tidak bisa dipisahkan, maka kami mengubah seluruh program
yang terbagi 3 modul yaitu perhitungan tanggal,bulan,dan tahun(dalam satu
modul),perhitungan hari, dan juga modul pengecekan tahun kabisat. Hasil beberapa
kali tes dari program ini berhasil sesuai dengan yang diinginkan. List program ini
terlampir pada lampiran source code.
20

BAB III
KESIMPULAN DAN SARAN

3.1 Kesimpulan

Target kelompok untuk menyelesaikan semua tugas pokok project 1 topik 3 sudah
sesuai dengan yang diharapkan. Tugas pokok project 1 topik 3 ini adalah membuat
program kalender dimana program ini dapat menghitung pertambahan dan pengurangan
hari yang diinputkan oleh user.

Dalam pembuatan program kalender ini perhitungan tanggal bulan dan tahun tidak
bisa dipisahkan, artinya harus ada dalam satu modul karena ketiganya saling berhubungan
satu sama lain. Selain itu diperlukan adanya perhitungan untuk menentukan bahwa tahun
tersebut merupakan tahun kabisat atau bukan karena berpengaruh terhadap jumlah hari
pada bulan februari.

3.2 Saran

Berikut saran terhadap rancangan program Kalender :

• Input program ini hanya diizinkan menggunakan angka. Alangkah baiknya


jika inputnya bisa menggunakan huruf.

• Program ini hanya bisa melakukan pertambahan hari. Alangkah baiknya jika
pertambahannya bisa menggunakan minggu, bulan, atupun tahun.

• Untuk perbaikan kedepannya diharapkan program ini dapat dikembangkan


menjadi lebih sempurna lagi, seperti dibuatnya kalender hijriyah.
21

DAFTAR PUSTAKA

Adel.(2009). Tahun Kabisat,[Online].Tersedia :


http://iamedel.wordpress.com/2008/02/29/tahun-kabisat [23 Nopember 2010]
LAMPIRAN

TAMPILAN PROGRAM

Gambar 1 Tampilan utama

Gambar 2 Tampilan input tanggal/bulan/tahun


Gambar 3 Tampilan input berapa hari yang diinginkan

Gambar 4 Tampilan hasil penghitungan hari, tanggal, bulan dan tahun


LAMPIRAN

SOURCE CODE
#include<stdio.h>
#include<iostream>
#include<conio.h>
#include<string>
/*calendar*/
using namespace std;

bool cek_tahun(int year)


{
bool status=false;
if (year%400==0||year%4==0&&year%100!=0)
{
status=true;
}
return(status);
}

void rubah_thn_bln_tgl(int *y,int *m,long int amount,int *date)


{
int i,x,jml_day[12];

jml_day[0]=31;
if (cek_tahun(*y)==true)
{
jml_day[1]=29;
}
else
{
jml_day[1]=28;
}
jml_day[2]=31;
jml_day[3]=30;
jml_day[4]=31;
jml_day[5]=30;
jml_day[6]=31;
jml_day[7]=31;
jml_day[8]=30;
jml_day[9]=31;
jml_day[10]=30;
jml_day[11]=31;

if(amount>0)
{
i=1;
x=amount;
while(i<=amount)
{
*date=*date+1;
if(*date>jml_day[*m]&&x>0)
{
*m=*m+1;
if(*m>11)//array bulan ke-11 adalah Desember
{
*m=0;//array bulan ke-0 adalah Januari
*y=*y+1;
if(cek_tahun(*y)==true)
{
jml_day[1]=29;
}
}
*date=1;
}
x--;
i++;
}
}
else if(amount<0)
{
while(amount!=0)
{
*date=*date-1;
if(*date<1&&amount<0)
{
*m=*m-1;
if(*m<0)//array bulan ke-11 adalah Desember
{
*m=11;//array bulan ke-0 adalah Januari
*y=*y-1;
if(cek_tahun(*y)==true)
{
jml_day[1]=29;
}
}
*date=jml_day[*m];
}
amount++;
}
}
}

string hitung_hari(int thn,int bln,int tgl)


{ //menghitung banyak hari dari 1 jan 1900 ~ hari ini
int i,total;
string hari[7];
hari[0]="Senin";
hari[1]="Selasa";
hari[2]="Rabu";
hari[3]="Kamis";
hari[4]="Jumat";
hari[5]="Sabtu";
hari[6]="Minggu";

total=0;
i=1900;
while(i<thn)
{
if(cek_tahun(i)==true)
{
total=total+366;
}
else
{
total=total+365;
}
i++;
}
i=0;
while(i<bln)
{
if(i==2 || i==4 || i==6 || i==7 || i==9 || i==11)
{
total=total+31;
}
else if (i==0 || i==3 || i==5 || i==8 || i==10)
{
total=total+30;
}
else if (i==1 && thn%400==0||thn%4==0&&thn%100!=0)
{
total=total+29;
}
else
{
total=total+28;
}
i++;
}
if(bln>0)
{
total=total+tgl;
}
else
{
total=total+tgl-1;
}
total=total%7;
i=0;
while(i<=6)
{
if(i==total)
{
return(hari[i]);
}
i++;
}

int main()
{
cout<<" PROGRAM KALENDER\n";
cout<<"=================================================================
==============\n";
cout<<" || KELOMPOK A-3 || TUGAS PROJECT 1 TOPIK 3
||\n";
cout<<"\n";
cout<<"# Program ini bertujuan untuk mengetahui hari, tanggal, bulan dan
tahun setelah dilakukan penambahan hari";
cout<<"pada data yang telah diinputkan sebelumnya oleh user #\n";
cout<<" press any key to begin\n";
getch();
system("cls");
string bln[12];
int i,d,tgl,month,year;
long int add;
string j;

bln[0]="Januari";
bln[1]="Februari";
bln[2]="Maret";
bln[3]="April";
bln[4]="Mei";
bln[5]="Juni";
bln[6]="Juli";
bln[7]="Agustus";
bln[8]="September";
bln[9]="Oktober";
bln[10]="November";
bln[11]="Desember";

cout<<"Masukan tanggal, bulan, tahun sekarang (dd/mm/yyyy) : ";


scanf("%d/%d/%d",&tgl,&month,&year);
cout<<"inputkan berapa hari yang anda inginkan? ";
cin>>add;

d=month-1;
rubah_thn_bln_tgl(&year,&d,add,&tgl);

cout<<endl<<add<<" hari kemudian adalah


\n"<<hitung_hari(year,d,tgl)<<","<<tgl<<" "<<bln[d]<<" "<<year;
cout<<"\n\napakah anda ingin mencoba lagi? (y/n) ";
cin>>j;
if(j== "y" || j== "Y")
{
system("cls");
return main();
}
else
{
system("cls");
cout<<"\n terimakasih anda telah menggunakan program
ini"<<endl;
cout<<" press any key to exit";
getch();
}
}

Anda mungkin juga menyukai