Hi everyone!
This is supposed to take a date in dd/mm/yyyy format from the keyboard and check whether its valid or not.It works for me but just wanted to make it a little shorter(If that's possible) and more readable.
Code:
#include<iostream>
using namespace std;
int checkyr(int);
int checkmon(int);
int checkdd(int,int,int);
int main()
{
int dd=1,mm=1,yyyy=1970;
cout<<endl<<"Enter the day:";
cin>>dd;
cout<<endl<<"Enter Month:";
cin>>mm;
cout<<endl<<"Enter year:";
cin>>yyyy;
if(!checkyr(yyyy))
{
if(!checkmon(mm))
{
if(!checkdd(dd,mm,yyyy))
cout<<endl<<"Date is valid";
}
}
fflush(stdin);
cin.get();
return 0;
}
int checkyr(int yyyy)
{
if(yyyy>0)
return 0;
else
{
cout<<"\nInvalid Year";
return 1;
}
}
int checkmon(int mm)
{
if((mm>=1)&&(mm<=12))
return 0;
else
{
cout<<"\nInvalid Month";
return 1;
}
}
int checkdd(int dd,int mm,int yyyy)
{
int lp=0;
if((yyyy%4==0 && yyyy%100!=0)||(yyyy%400==0))
lp=1;
if((mm%2==1 && mm<=7)||(mm%2==0 && mm>=8))
{
if((dd>=1)&&(dd<=31))
return 0;
}
if(mm==4||mm==6||mm==9||mm==11)
{
if((dd>=1)&&(dd<=30))
return 0;
}
if(mm==2)
{
switch(lp)
{
case 0:
if((dd>=1)&&(dd<=28))
return 0;
break;
case 1:
if((dd>=1)&&(dd<=29))
return 0;
break;
}
}
cout<<endl<<"Invalid Day";
return 1;
}
Thanks!