Leap Year Check (অধিবর্ষ যাচাই)


Q1. কোনো একটি বর্ষ অধিবর্ষ (লিপ ইয়ার) কীনা তা যাচাই করার সি প্রোগ্রাম লিখ।

উত্তরঃ একটি বর্ষ লিপ ইয়ার (অধিবর্ষ) কীনা যাচাই করার বেসিক কৌশলটা আগে জেনে নেয়া যাক।

আমরা জানি যে, কোনো বর্ষ যদি ৪ দিয়ে নিঃশেষে বিভাজ্য হয় তবে সেই বর্ষটি অধিবর্ষ। কিন্তু অধিবর্ষ নির্ণয়ের এই কৌশলটি পরিপূর্ণ নয়। সম্পূর্ণ কৌশলটি নিম্নরুপঃ

(১) কোন বর্ষ যদি 400 দিয়ে নিঃশেষে বিভাজ্য হয় তবে সেটি অবশ্যই অধিবর্ষ। কিন্তু 400 দিয়ে নিঃশেষে বিভাজ্য না হলে সেটি যে অধিবর্ষ নয় তা বলা যাবে না। কোনো বর্ষ যদি 400 দিয়ে নিঃশেষে বিভাজ্য না হয় তবে নিম্নলিখিত শর্ত দুটি যাচাই করতে হবে।

(২) 400 দিয়ে বিভাজ্য নয় এমন বর্ষ যদি 4 দিয়ে বিভাজ্য এবং 100 দিয়ে বিভাজ্য না হয় তবে সেটিও অধিবর্ষ হবে।

এক বাক্যে এভাবে বলা যায়, কোনো বর্ষ অধিবর্ষ হবে যদি বর্ষটি: 400 দিয়ে বিভাজ্য হয় অথবা 4 দিয়ে বিভাজ্য কিন্তু 100 দিয়ে বিভাজ্য না হয়।

উদাহরণের সাহয্যে উপরের কৌশলটি ব্যাখ্যা করা যাক। ধরা যাক, 96, 100, 400 এই তিনটি বর্ষ অধিবর্ষ কিনা তা যাচাই করা হবে।  

96 বর্ষটি 400 দিয়ে বিভাজ্য নয়। তাই বলে এই বর্ষটিকে অধিবর্ষ নয় বলা যাবে না। কারণ বর্ষটি 4 দিয়ে বিভাজ্য কিন্তু 100 দিয়ে বিভাজ্য নয় বলে সেটি একটি অধিবর্ষ।

অপরদিকে, 100 বর্ষটি 400 দিয়ে বিভাজ্য নয়। আবার 4 দিয়ে বিভাজ্য এবং 100 দিয়েও বিভাজ্য বলে এই বর্ষটি প্রকৃতপক্ষে অধিবর্ষ নয়।

কিন্তু, 400 বর্ষটি 400 দিয়ে বিভাজ্য। অন্য কোনো শর্ত যাচাই না করেই বলা যায়, 400 বর্ষটি একটি অধিবর্ষ।

এবার নিচের প্রোগ্রামাংশ ও কমেন্টগুলো লক্ষ্য করি-

int n; 	
/* n নামের intgeger টাইপের চলক ঘোষণা*/
printf("Enter any Year: \n"); 	
/* ইউজারকে কিবোর্ড থেকে ইনপুট দেয়ার নির্দেশনা*/
scanf("%d", n); 	
/* ইউজার প্রদত্ত ইনপুট n এর মেমরি এড্রেসে সংরক্ষণ*/
if((n%400)==0) 
/* n যদি 400 দিয়ে বিভাজ্য হয় তবে......... */ 
printf("%d is a leap year.", n); 	
/* n বর্ষটি অধিবর্ষ*/
else 	/* n যদি 400 দিয়ে বিভাজ্য না হয় তবে.........*/
{  
if((n%4)==0&&(n%100)!=0) 
/* n যদি 4 দিয়ে বিভাজ্য এবং 100 দিয়ে বিভাজ্য না হয় তবে */
printf("%d is a leap year.", n); 	/* n বর্ষটি অধিবর্ষ*/ 
else 
/* n যদি 4 দিয়ে বিভাজ্য না হয় অথবা n যদি 4 এবং 100 দিয়ে বিভাজ্য হয় তবে.. */  
printf("%d is not a leap year.", n); 	/* n বর্ষটি অধিবর্ষ নয়*/
}

সম্পূর্ণ প্রোগ্রামটি নিম্নরুপ-

#include<stdio.h>
#include<conio.h>
int main()
{
 int n; 
 printf("Enter any integer: \n");
 scanf("%d", &n);
 if((n%400)==0)
  printf("%d is a leap year", n);
 else
 {
  if((n%4)==0&&(n%100)!=0)
   printf("%d is a leap year", n);
  else
   printf("%d is not a leap year", n);
 }	
}

কোড সংক্ষিপ্ত করে নিচের প্রোগ্রামটির মাধ্যমেও অধিবর্ষ যাচাই করা যায়-

#include<stdio.h>
#include<conio.h>
int main()
{
 int n;
 printf("Enter any year:\n");
 scanf("%d",&n);
 if((n%400==0)||(n%4==0&&n%100!=0)) /* সবগুলো শর্ত একত্রিত করা হয়েছে */ 
  printf("%d is a leap year.",n); 
 else
  printf("%d is not a leap year",n);
}

Leave a Reply

Your email address will not be published.