আসসালামু আলাইকুম
সি প্রোগ্রামিং বাংলা টিউটোরিয়াল পার্ট-১৩ স্বাগতম। আজকের পর্বে কন্ডিশনাল লজিকের আর ও একটি ইমপ্লিমেন্টেশন দেখব আমরা। এই পর্বের বিষয় হচ্ছে লিপ ইয়ার (leap year) নির্ণয়।
লিপ ইয়ার কিঃ
আমরা জানি এক বছর = ৩৬৫ দিন। প্রতি বছরের ফেব্রুয়ারি মাস হয় ২৮ দিনে। আসলে ১ বছর = ৩৬৫.২৪২৫ দিন। তাই প্রতি ৪ বছর পরে এই ( ৪ x ০.২৪২৫ ) মিলে ১ দিন হয়। তাই প্রতি ৪ বছর অন্তর অন্তর ফেব্রুয়ারি মাস ২৯ দিনে হয়। আর এই ৪ বছর অন্তর অন্তর যে বছরে ফেব্রুয়ারি মাস ২৯ দিনে হয় সে বছরকে বলা হয় লিপ ইয়ার (leap year)।
যা যা লাগবেঃ
ক) একটি ভেরিয়েবল, যাতে আমরা বছরটি রাখব। ধরি আমাদের ভেরিয়েবল হলো year। আমরা প্রথমে ধরে নিলাম year এ ৪০ রয়েছে। অর্থাৎ int year = 40;
খ) কন্ডিশনাল লজিক।
লজিকঃ
যেহেতু ৪ বছর পর পর লিপ ইয়ার হয়ে থাকে, তাই সব লিপ ইয়ারই ৪ দিয়ে নিঃশেষে বিভাজ্য হবে। লিপ ইয়ার হবার ২টি শর্ত রয়েছে।
ক) ৪ দিয়ে নিঃশেষে বিভাজ্য হবে এবং (&&) ১০০ দিয়ে নিঃশেষে বিভাজ্য হবে না (!=)। অর্থাৎ ((year % 4) == 0 && (year % 100) != 0)
সি প্রোগ্রামে এবং বোঝাতে ডাবল এ্যান্ড (&&) চিহ্ন ব্যবহার করা হয়। আর সমান নয় (not equal to) বোঝাতে (!=) লেখা হয়। যার ! এর অর্থ নট।
অথবা (or বা অথবা বোঝাতে ডাবল ভার্টিকাল বার (||) লেখা হয়)
খ) ৪০০ দিয়ে নিঃশেষে বিভাজ্য হবে। অর্থাৎ (year % 400) == 0
লজিক বিশ্লেষনঃ
প্রতিটি লিপ ইয়ার অবশ্যই ৪ দিয়ে নিঃশেষে বিভাজ্য হবে। কিছু লিপ ইয়ার ৪০০ দিয়ে নিঃশেষে বিভাজ্য হবে।
এবারে যেসব লিপ ইয়ার ৪০০ দিয়ে নিঃশেষে বিভাজ্য হবে তারা সবাই ৪, ১০০, এবং ৪০০ দিয়ে বিভাজ্য হবে। ৪ এবং ১০০ দিয়ে নিঃশেষে বিভাজ্য হলেও যদি ৪০০ দিয়ে নিঃশেষে বিভাজ্য না হয় তবে সেটি লিপ ইয়ার হবেনা।
৪০০ এর ছোট বছর গুলোর ক্ষেত্রে লিপ ইয়ার ৪ দিয়ে নিঃশেষে বিভাজ্য হবে কিন্ত ১০০ দিয়ে নিঃশেষে বিভাজ্য হবে না। যেমন, ১০০, ২০০, ৩০০ এদের কেউই লিপ ইয়ার নয়। এরা ৪ দিয়ে নিঃশেষে বিভাজ্য এবং ১০০ দিয়ে নিঃশেষে বিভাজ্য।
তাহলে, মুলত লজিক টি হচ্ছে –
যদি বছরটি ((৪ দিয়ে নিঃশেষে বিভাজ্য হয়) এবং (১০০ দিয়ে নিঃশেষে বিভাজ্য না হয়)) অথবা (যদি ৪০০ দিয়ে নিঃশেষে বিভাজ্য হয়) , তবে সেটি লিপ ইয়ার হবে।
if (যদি) (((year % 4) == 0 (৪ দিয়ে নিঃশেষে বিভাজ্য হয়) && (এবং) (year % 100) != 0 (১০০ দিয়ে নিঃশেষে বিভাজ্য না হয়)) || (অথবা) (year % 400) == 0 (যদি ৪০০ দিয়ে নিঃশেষে বিভাজ্য হয়))
তা নাহলে লিপ ইয়ার হবেনা।
কোডঃ
#include<stdio.h>
main()
{
int year = 40;
if(((year % 4) == 0 && (year % 100) != 0) || (year % 400) == 0)
{
printf(” This Year %d is a Leap Year. \n”, year);
}
else
{
printf(” This Year %d is not a Leap Year. \n”, year);
}
return 0;
}
নমুনা বছরঃ
Year ভেরিয়েবল এ নিচের নমুনা বছর গুলো দিয়ে কোডটি রান করে দেখুন কোডটি ঠিক্টঠাক ফলাফল দেয় কিনা।
50 (লিপ ইয়ার নয়),
80 (লিপ ইয়ার),
100 (লিপ ইয়ার নয়),
500 (লিপ ইয়ার নয়),
1600 (লিপ ইয়ার),
2412 (লিপ ইয়ার),
1900 (লিপ ইয়ার নয়) ।