दिनांक, महीना और वर्ष को पूर्णांक के रूप में दिया जाता है। कार्य यह पता लगाना है कि वह तारीख संभव है या नहीं।
वैध तारीख की सीमा
वैध तारीख 1/1/1800 से 31/12/9999 के बीच होनी चाहिए; इससे बाहर की तारीखें अमान्य हैं।
ये सीमाएं केवल वर्ष की रेंज तक ही सीमित नहीं हैं, बल्कि कैलेंडर तारीख से संबंधित सभी प्रतिबंधों को भी शामिल करती हैं।
प्रतिबंध
- दिन 1 से कम और 31 से अधिक नहीं हो सकता।
- महीना 1 से कम और 12 से अधिक नहीं हो सकता।
- वर्ष 1800 से कम और 9999 से अधिक नहीं हो सकता।
- अप्रैल, जून, सितंबर, नवंबर में दिन 30 से अधिक नहीं हो सकता।
- फरवरी के लिए लीप वर्ष की जांच करें:
- यदि वर्ष लीप वर्ष है तो दिन 29 से अधिक नहीं हो सकता।
- अन्यथा दिन 28 से अधिक नहीं हो सकता।
यदि सभी प्रतिबंध पूरे होते हैं तो तारीख वैध है, अन्यथा नहीं।
उदाहरण
इनपुट: y = 2002, d = 29, m = 11 आउटपुट: Date is valid इनपुट: y = 2001, d = 29, m = 2 आउटपुट: Date is not valid
एल्गोरिदम
START
फंक्शन int isleap(int y)
स्टेप 1→ यदि (y % 4 == 0) && (y % 100 != 0) && (y % 400 == 0) तो 1 लौटाएं
स्टेप 2→ अन्यथा 0 लौटाएं
फंक्शन int datevalid(int d, int m, int y)
स्टेप 1→ यदि y < min_yr || y > max_yr तो 0 लौटाएं
स्टेप 2→ यदि m < 1 || m > 12 तो 0 लौटाएं
स्टेप 3→ यदि d < 1 || d > 31 तो 0 लौटाएं
स्टेप 4→ यदि m == 2 तो
यदि isleap(y) तो
यदि d <= 29 तो 1 लौटाएं अन्यथा 0 लौटाएं
स्टेप 5→ यदि m == 4 || m == 6 || m == 9 || m == 11 तो
यदि d <= 30 तो 1 लौटाएं अन्यथा 0 लौटाएं
अंत में 1 लौटाएं
END
C कोड उदाहरण
#include <stdio.h>
#define max_yr 9999
#define min_yr 1800
int isleap(int y) {
if((y % 4 == 0) && (y % 100 != 0) && (y % 400 == 0))
return 1;
else
return 0;
}
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;
if(m == 2) {
if(isleap(y)) {
if(d <= 29) return 1;
else return 0;
}
}
if(m == 4 || m == 6 || m == 9 || m == 11) {
if(d <= 30) return 1;
else return 0;
}
return 1;
}
int main() {
int y = 2002, d = 29, m = 11;
if(datevalid(d, m, y))
printf("Date is valid\n");
else
printf("date is not valid\n");
return 0;
}
आउटपुट
Date is valid