- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
C Program to check if a date is valid or not
Given date in format date, month and year in integer. The task is to find whether the date is possible on not.
Valid date should range from 1/1/1800 – 31/12/9999 the dates beyond these are invalid.
These dates would not only contains range of year but also all the constraints related to a calendar date.
Constraints are −
- Date can’t be less than 1 and more than 31
- Month can’t be less than 1 and more than 12
- Year can’t be less than 1800 and more than 9999
- When the months are April, June, September, November the date can’t be more than 30.
- When the month is February we have to check whether,
- If the year is leap year then the number of days can’t be more than 29
- Else the number of days can’t be more than 28.
If all the constraints are true then it is a valid date, Else it is not.
Example
Input: y = 2002 d = 29 m = 11 Output: Date is valid Input: y = 2001 d = 29 m = 2 Output: Date is not valid
Algorithm
START In function int isleap(int y) Step 1-> If (y % 4 == 0) && (y % 100 != 0) && (y % 400 == 0) then, Return 1 Step 2-> Else Return 0 In function int datevalid(int d, int m, int y) Step 1-> If y < min_yr || y > max_yr then, Return 0 Step 2-> If m < 1 || m > 12 then, Return 0 Step 3-> If d < 1 || d > 31 then, Return 0 Step 4-> If m == 2 then, If isleap(y) then, If d <= 29 then, Return 1 Else Return 0 End if End if Step 5-> If m == 4 || m == 6 || m == 9 || m == 11 then, If(d <= 30) Return 1 Else Return 0 Return 1 End Function In main(int argc, char const *argv[]) Step 1->Assign and initialize values as y = 2002, d = 29, m = 11 Step 2-> If datevalid(d, m, y) then, Print "Date is valid" Step 3-> Else Print "date is not valid” End main STOP
Example
#include <stdio.h> #define max_yr 9999 #define min_yr 1800 //to check the year is leap or not //if the year is a leap year return 1 int isleap(int y) { if((y % 4 == 0) && (y % 100 != 0) && (y % 400 == 0)) return 1; else return 0; } //Function to check the date is valid or not int datevalid(int d, int m, int y) { if(y < min_yr || y > max_yr) return 0; if(m < 1 || m > 12) return 0; if(d < 1 || d > 31) return 0; //Now we will check date according to month if( m == 2 ) { if(isleap(y)) { if(d <= 29) return 1; else return 0; } } //April, June, September and November are with 30 days if ( m == 4 || m == 6 || m == 9 || m == 11 ) if(d <= 30) return 1; else return 0; return 1; } int main(int argc, char const *argv[]) { int y = 2002; int d = 29; int m = 11; if(datevalid(d, m, y)) printf("Date is valid
"); else printf("date is not valid
"); return 0; }
Output
If run the above code it will generate the following output −
Date is valid
Advertisements