Jumat, 02 Maret 2012

CALENDAR FOR THE C + +

 How the algorithm calendar?
 
We just know the dates of January 1 is Sunday.  
Well in that we can make an example is 1 January 1900
just on Sundays. From here, we count the number of 
days until this month, minus 1. For example this month 
is the month 6 of 2010, we have to calculate how much 
the number of days from 1900 until 2009, then add the  
number of days in the previous months in 2010  
(rather than months of January through May. 

Thus we obtain the total number of days
 Well if the total is divided by 7 (modulus 7) 
will generate the rest between 0-6, this is what 
will be in determining what day access on that date
 Suppose the remainder is 1, then it was Sunday.
 
We will see simple examples. For example on 5 January 1900
from the 1st january 1900-5 January 1900, we have a total day 
as much as 5 days. If divided by 7 will produce the remaining five
means the date is Thursday 5th January. We will try to see what day  
the 16th of March 1900. Starting in January to February there were  
59 days (30 +29, 1900 is a leap year), and up on the 16th March there 
will be 76 days (59 +16). 76 when divided by 7 will produce the 
remaining 6, the date of 16 March 1900 is on Friday. Well that's 
how it works. 

#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <dos.h>
 
void kalender (long *hari, int n);
void tanggal(int *tgl,int *bln, int *thn);
void getdate (struct date *tanggal);
 
int main()
{
 int tgl, bln, thn;
 int tglc, blnc, thnc;
 int show=0;
 long hari=0;
 char tombol;
 
 //mengambil data tanggal hari ini
 tanggal(&tgl, &bln, &thn);
 tglc=tgl;
 blnc=bln;
 thnc=thn;
 
 do
 {
  hari=0;
  clrscr();
  cout << endl;
  cout << endl;
  cout << "\t\t\t        Kalender" ;
  cout << endl << endl;
 
  //menampilkan tanggal
  cout << " Today : " << tglc << ' ';
  if (blnc==1)
   cout << "Januari";
  else if (blnc==2)
   cout << "Februari";
  else if (blnc==3)
   cout << "Maret";
  else if (blnc==4)
   cout << "April";
  else if (blnc==5)
   cout << "Mei";
  else if (blnc==6)
   cout << "Juni";
  else if(blnc==7)
   cout << "Juli" ;
  else if (blnc==8)
   cout << "Agustus";
  else if (blnc==9)
   cout << "September";
  else if (blnc==10)
   cout << "Oktober";
  else if (blnc==11)
   cout << "November";
  else if (blnc==12)
   cout << "Desember";
  cout << ' ' << thnc ;
 
  if (show)
  {
   cout << "\t\t\t                  <R>emove Menu" ;
  }
  else
   cout << "\t\t\t                  <S>how Menu" ;
 
  cout << endl << endl;
  cout << "\t\t              " << setw(9);
 
  if (bln==1)
   cout << "Januari";
  else if (bln==2)
   cout << "Februari";
  else if (bln==3)
   cout << "Maret";
  else if (bln==4)
   cout << "April";
  else if (bln==5)
   cout << "Mei";
  else if (bln==6)
   cout << "Juni";
  else if(bln==7)
   cout << "Juli" ;
  else if (bln==8)
   cout << "Agustus";
  else if (bln==9)
   cout << "September";
  else if (bln==10)
   cout << "Oktober";
  else if (bln==11)
   cout << "November";
  else if (bln==12)
   cout << "Desember";
  cout << ' ' << thn ;
  cout << endl << endl ;
 
  //menghitung banyak hari dari tanggal 1 januari 1900 sampai tanggal sekarang
  for (int i=1900 ; i<thn ; i++)
  {
   if (i%4==0)
    hari+=366;
   else
    hari+=365;
  }
 
  for (i=1 ; i<bln ; i++)
  {
   if (i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12)
    hari+=31;
   else if (i==4 || i==6 || i==9 || i==11)
    hari+=30;
   else if (i==2 && thn%4==0)
    hari+=29;
   else
    hari+=28;
  }
 
  //menampilkan kalender
  i=bln;
  if (i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12)
   kalender(&hari,31);
  else if (i==4 || i==6 || i==9 || i==11)
   kalender(&hari,30);
  else if (i==2 && thn%4==0)
   kalender(&hari,29);
  else
   kalender(&hari,28);
 
  //menampilkan menu
  if (show)
  {
   cout << endl << endl;
   cout << "        <U> Next Year       <K> Next Month       <G>Goto    <E>exit" << endl;
   cout << "        <J> Previous Year   <H> Previous Month   <A>About" << endl;
  }
  else
   ;
 
  //menunggu penekanan tombol keyboard
  tombol=getch();
 
  //jika penekanan tombol telah dilakukan
  if (tombol=='u' || tombol=='U')
   thn++;
  else if (tombol=='s' || tombol=='S')
   show=1;
  else if (tombol=='r' || tombol=='R')
   show=0;
  else if (tombol=='h' || tombol=='H')
   if (bln==1)
   {
    bln=12;
    thn--;
   }
   else
    bln--;
  else if (tombol=='j' || tombol=='J')
   thn--;
  else if (tombol=='k' || tombol=='K')
   if (bln==12)
   {
    bln=1;
    thn++;
   }
   else
    bln++;
  else if (tombol=='e' || tombol=='E')
   goto exit;
  else if (tombol=='a' || tombol=='A')
  {
   clrscr();
   cout << endl << endl;
   cout << "               Program Kalender 1.04" << endl;
   cout << "     Duken Marga Turnip (duken_mt@yahoo.co.id)" << endl << endl;
   cout << "          compiled with Turbo C++ 1.01" << endl;
   cout << "           edited with Notepad++ 5.03" << endl;
   cout << "                1 Januari 2008" << endl;
   cout << " How to Use :" << endl;
   cout << " When you run this program, it will display the currently month in" << endl;
   cout << "  your computer. You can also see other month or year by pressing" << endl;
   cout << "  key like 'U' to see next year, 'H' to see prevoius month, etc. " << endl;
   cout << "  Use it with your right hand like using arrow keyboard ^.^" << endl << endl;
   cout << "\t\t" << "   U" << endl;
   cout << "\t\t" << "H  J  K" << endl << endl ;
   cout << "  You can also go to date you want in menu Go To and fill the month "  << endl;
   cout << "  and year you want to see." << endl;
   cout << "  This calendar can display the date from 1 January 1900 up to the future." << endl;
   cout << "  hehehe..." << endl << endl ;
   cout << "          Press any key to go back..";
   getch();
  }
  else if (tombol=='g' || tombol=='G')
  {
   clrscr();
   cout << endl << endl << endl;
   cout << "  GO TO..." << endl << endl;
   do
   {
    cout << "  Month : ";
    cin >> bln;
   } while (bln<1 || bln>12);
   do
   {
    cout << "  Year  : ";
    cin >> thn;
   } while (thn<1900);
 
  }
  else
   ;
 } while (1);
 
 exit:
  return 0;
}
 
void kalender (long *hari, int n)
{
 cout << "     MINGGU     SENIN     SELASA     RABU     KAMIS     JUMAT     SABTU ";
 cout << endl << endl;
 for (int i=1 ; i<=n ; i++)
 {
  int angka=0;
  angka=*hari%7;
  if (i==1)
   cout << setw((angka+1)*10) << i;
  else
   cout << setw (10) << i ;
  (*hari)++;
  if (angka==6)
   cout << endl << endl;
 }
}
 
void tanggal (int *tgl,int *bln, int *thn)
{
 struct date tanggal;
 getdate(&tanggal);
 *tgl=(int) tanggal.da_day;
 *bln=(int) tanggal.da_mon;
 *thn=tanggal.da_year;
}

Tidak ada komentar:

Posting Komentar