সংক্ষিপ্ত বিবরণ
এই প্রোগ্রামটি একটি প্রদত্ত তারিখ (দিন, মাস, বছর) যাচাই করে যে সেটি ক্যালেন্ডারের নিয়মাবলী অনুযায়ী বৈধ কিনা।
বৈধতার শর্তাবলী
- বছর: ১৮০০ থেকে ৯৯৯৯ পর্যন্ত
- মাস: ১ থেকে ১২ পর্যন্ত
- দিন: ১ থেকে ৩১ পর্যন্ত (মাস অনুযায়ী পরিবর্তনশীল)
- এপ্রিল, জুন, সেপ্টেম্বর, নভেম্বর — সর্বোচ্চ ৩০ দিন
- ফেব্রুয়ারি — লিপ ইয়ার হলে ২৯ দিন, অন্যথায় ২৮ দিন
অ্যালগরিদম
- বছর ১৮০০–৯৯৯৯ এর মধ্যে কিনা যাচাই করুন
- মাস ১–১২ এর মধ্যে কিনা যাচাই করুন
- দিন ১–৩১ এর মধ্যে কিনা যাচাই করুন
- ফেব্রুয়ারি হলে লিপ ইয়ার যাচাই করুন
- ৩০ দিনवाले মাসগুলোতে দিন ৩০ এর বেশি কিনা যাচাই করুন
- সব শর্ত পূরণ হলে বৈধ, অন্যথায় অবৈধ
উদাহরণ
ইনপুট: y=2002, d=29, m=11 → আউটপুট: Date is valid ইনপুট: y=2001, d=29, m=2 → আউটপুট: Date is not valid
সি কোড
#include <stdio.h>
#define MAX_YR 9999
#define MIN_YR 1800
int isLeap(int y) {
return (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0);
}
int isValidDate(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)) return d <= 29;
return d <= 28;
}
if (m == 4 || m == 6 || m == 9 || m == 11)
return d <= 30;
return 1;
}
int main() {
int y = 2002, d = 29, m = 11;
if (isValidDate(d, m, y))
printf("Date is valid\n");
else
printf("Date is not valid\n");
return 0;
}
আউটপুট
Date is valid