Minggu, 10 April 2011

Algoritma "The Day of The Week"

Beberapa waktu yang lalu, seorang teman saya meminta bantuan untuk membuat sebuah program yang dapat mengetahui hari pada suatu tanggal. Problem tersebut diberi nama 'the day of the week'. Dia juga diberi tahu bahwa algoritma yang digunakan untuk menyelesaikan problem tersebut ada pada wikipedia. Jadilah saya buka - buka wikipedia dan mulai membaca algoritmanya.
Kira - kira begini :



Contoh Kasus
Tanggal : 26
Bulan : Juni
Tahun : 1993

  • Lihat penggolongan pada centuries table, kemudian cari nilai dari tahun 1993. Nilainya 0.
                    cent = 0;
  • Simpan nilai dari 2 digit terakhir pada tahun 1993. Nilainya : 93.
                    year = tahun mod 100;
  • Nilai dari 2 digit terakhir pada tahun dibagi dengan 4 kemudian dibulatkan kebawah.
                   year2 = floor(year/4); (jika variabel bertipe float atau double)
                   atau jika variabel tersebut bertipe dta integer, maka langsung saja 
                   year2 = year/4;
  • Lihat penggolongan pada months table, kemudian cari nilai dari bulan Juni. Nilainya 4.
                   month = 4;
  • Jumlahkan hasil dari keempat langkah diatas dengan tanggal kemudian hasilnya dimodulo dengan 7.
                   sum = (cent + year + year2 + month + tanggal) mod 7;
                   dalam kasus ini :
                   sum = (0 + 93 + 23 + 4 +26) mod 7 = 6
  • Lihat pada days table, lihat hari yang sesuai dengan nilai sum.
                   dalam kasus ini :
                   6 = Sabtu;


CENTURIES TABLE
1700–1799     4       
1800–1899     2
1900–1999     0
2000–2099     6
2100–2199     4
2200–2299     2
2300–2399     0
2400–2499     6
2500–2599     4
2600–2699     2



MONTHS TABLE
Januari      0 (jika tahun kabisat : 6)
Februar      3 (jika tahun kabisat : 2)
Maret        3
April        6
Mei          1
Juni         4
Juli         6
Agustus      2
September    5
Oktober      0
November     3
Desember     5



DAYS TABLE
Minggu    0
Senin     1
Selasa    2
Rabu      3
Kamis     4
Jumat     5
Sabtu     6


Nah, sederhana kan ternyata?? Hweheheheheh.
Semoga yang saya tulis kali ini bisa bermanfaat untuk semua yang membacanya ^^.
Ini ada contoh source code yang sudah jadi dalam bahasa C++ & .exe nya. Silahkan download kalo mau.

Klik disini atau coba download disini.
==== Jika ada gambar seperti ini
klik tulisan SKIP AD  setelah itu akan langsung di-direct ke link download ============

Tidak ada komentar:

Posting Komentar

Silahkan tulis segala komentar, kritik, saran, pertanyaan atau apa aja lah, yang penting sopan. okeoke?