156 lines
2.4 KiB
C++
156 lines
2.4 KiB
C++
Forever Calender in C++
|
|
|
|
#include<iostream.h>
|
|
#include<conio.h>
|
|
|
|
int step1 (int);
|
|
void month_name(int);
|
|
int no_days(int,int);
|
|
int leap(int);
|
|
|
|
void main()
|
|
{
|
|
restart:
|
|
clrscr();
|
|
cout<<"Enter year : ";
|
|
unsigned int y,m;
|
|
cin>>y;
|
|
int x;
|
|
x=step1(y);
|
|
int month[14][12]= {1,4,4,7,2,5,7,3,6,1,4,6,
|
|
2,5,5,1,3,6,1,4,7,2,5,7,
|
|
3,6,6,2,4,7,2,5,1,3,6,1,
|
|
4,7,7,3,5,1,3,6,2,4,7,2,
|
|
5,1,1,4,6,2,4,7,3,5,1,3,
|
|
6,2,2,5,7,3,5,1,4,6,2,4,
|
|
7,3,3,6,1,4,6,2,5,7,3,5,
|
|
1,4,5,1,3,6,1,4,7,2,5,7,
|
|
2,5,6,2,4,7,2,5,1,3,6,1,
|
|
3,6,7,3,5,1,3,6,2,4,7,2,
|
|
4,7,1,4,6,2,4,7,3,5,1,3,
|
|
5,1,2,5,7,3,5,1,4,6,2,4,
|
|
6,2,3,6,1,4,6,2,5,7,3,5,
|
|
7,3,4,7,2,5,7,3,6,1,4,6};
|
|
cout<<"Enter month (1 - 12) : ";
|
|
month_input:
|
|
cin>>m;
|
|
if(m<1 || m>12)
|
|
{
|
|
cout<<"Enter a valid month (1 - 12) : ";
|
|
goto month_input;
|
|
}
|
|
cout<<"
|
|
|
|
";
|
|
month_name(m);
|
|
cout<<' '<<y<<"
|
|
|
|
Mon Tue Wed Thu Fri Sat Sun
|
|
";
|
|
int j=month[x-1][m-1], days=no_days(m,y);
|
|
for (int i=0; i<j-1; i++)
|
|
cout<<' ';
|
|
for(i=1; i<=days; i++)
|
|
{
|
|
cout<<i<<' ';
|
|
if(j==7)
|
|
{
|
|
cout<<'
|
|
';
|
|
j=1;
|
|
}
|
|
else
|
|
j++;
|
|
}
|
|
cout<<"
|
|
|
|
Try for another month? (y/n) : ";
|
|
char ch;
|
|
cin>>ch;
|
|
if(ch=='y' || ch=='Y')
|
|
goto restart;
|
|
}
|
|
int step1 (int y)
|
|
{
|
|
int x=y%7;
|
|
x+=(y-1)/4;
|
|
x-=(y-1)/100;
|
|
x+=(y-1)/400;
|
|
x=x%7;
|
|
if(x==0)
|
|
x=7;
|
|
if(leap(y))
|
|
x+=7;
|
|
return x;
|
|
}
|
|
void month_name(int m)
|
|
{
|
|
switch(m)
|
|
{
|
|
case 1 : cout<<"January";
|
|
break;
|
|
case 2 : cout<<"February";
|
|
break;
|
|
case 3 : cout<<"March";
|
|
break;
|
|
case 4 : cout<<"April";
|
|
break;
|
|
case 5 : cout<<"May";
|
|
break;
|
|
case 6 : cout<<"June";
|
|
break;
|
|
case 7 : cout<<"July";
|
|
break;
|
|
case 8 : cout<<"August";
|
|
break;
|
|
case 9 : cout<<"September";
|
|
break;
|
|
case 10: cout<<"October";
|
|
break;
|
|
case 11: cout<<"November";
|
|
break;
|
|
case 12: cout<<"December";
|
|
break;
|
|
}
|
|
}
|
|
|
|
int no_days(int mon, int y)
|
|
{
|
|
int d;
|
|
switch(mon)
|
|
{
|
|
case 1 :
|
|
case 3 :
|
|
case 5 :
|
|
case 7 :
|
|
case 8 :
|
|
case 10:
|
|
case 12: d=31;
|
|
break;
|
|
case 4 :
|
|
case 6 :
|
|
case 9 :
|
|
case 11: d=30;
|
|
break;
|
|
case 2 : if(leap(y))
|
|
d=29;
|
|
else
|
|
d=28;
|
|
break;
|
|
}
|
|
return d;
|
|
}
|
|
int leap (int y)
|
|
{
|
|
if (y%100==0)
|
|
if (y%400==0)
|
|
return 1;
|
|
else
|
|
return 0;
|
|
else
|
|
if (y%4==0)
|
|
return 1;
|
|
else
|
|
return 0;
|
|
}
|