Object
Write a program to input a date and check whether it is valid or not.
Algorithm
- Declare integer variables d, m, y and leap.
- Read d, m and y.
- Set leap = y mod 4.
- IF (m<1 or m>12 or d<1 or y<0), then
- Write “Date is invalid”.
- Exit.
- ELSE
- IF ((m=2 or m=4 or m=6 or m=9 or m=11) and (d>30 or d<1)), then
- Write “Date is invalid”.
- Exit.
- ELSE IF (m=2 and (d > 28 or d<1) and leap>0), then
- Write “Date is invalid”.
- Exit.
- ELSE IF (m=2 and (d > 29 or d<1) and leap=0), then
- Write “Date is invalid”.
- Exit.
- ELSE
- Write “Date is valid”.
- [End of inner IF-ELSE structure.]
- [End of outer IF-ELSE structure.]
- Exit.
Flowchart

C++ Source Code
// program 26
#include<iostream>
using namespace std;
int main()
{
int d, m, y, leap;
cout << "Enter the date (dd mm yyyy): ";
cin >> d >> m >> y;
leap = y % 4;
if (m < 1 || m > 12 || d < 1 || y < 0)
{
cout << "The date " << d << "/" << m << "/" << y << " is invalid.";
exit(1);
}
else
{
if ((m == 2 || m == 4 || m == 6 || m == 9 || m == 11) && (d > 30 || d < 1))
{
cout << "The date " << d << "/" << m << "/" << y << " is invalid.";
exit(1);
}
else if (m == 2 && (d > 28 || d < 1) && leap > 0)
{
cout << "The date " << d << "/" << m << "/" << y << " is invalid.";
exit(1);
}
else if (m == 2 && (d > 29 || d < 1) && leap == 0)
{
cout << "The date " << d << "/" << m << "/" << y << " is invalid.";
exit(1);
}
else
{
cout << "The date " << d << "/" << m << "/" << y << " is valid.";
}
}
return 0;
}
C Source Code
/*program 26*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int d, m, y, leap;
printf("Enter the date (dd mm yyyy): ");
scanf("%d %d %d", &d, &m, &y);
leap = y % 4;
if (m < 1 || m > 12 || d < 1 || y < 0)
{
printf("The date %d/%d/%d is invalid.\n", d, m, y);
exit(1);
}
else
{
if ((m == 2 || m == 4 || m == 6 || m == 9 || m == 11) && (d > 30 || d < 1))
{
printf("The date %d/%d/%d is invalid.\n", d, m, y);
exit(1);
}
else if (m == 2 && (d > 28 || d < 1) && leap > 0)
{
printf("The date %d/%d/%d is invalid.\n", d, m, y);
exit(1);
}
else if (m == 2 && (d > 29 || d < 1) && leap == 0)
{
printf("The date %d/%d/%d is invalid.\n", d, m, y);
exit(1);
}
else
{
printf("The date %d/%d/%d is valid.\n", d, m, y);
}
}
return 0;
}
Output
Enter the date (dd mm yyyy): 29 2 2002
The date 29/2/2002 is invalid.
