তারিখ হলো দিন, মাস এবং বছর। তারিখ প্রদর্শনের বিভিন্ন পদ্ধতি রয়েছে।
এখানে, আমাদের একটি প্রোগ্রাম আছে যা সিলেকশন সর্ট ব্যবহার করে তারিখ সর্ট করে। তাহলে এই কনসেপ্টে ব্যবহৃত বিষয়গুলো জানি।
তারিখ সর্ট করা
তারিখ সর্ট করার কনসেপ্টে তারিখ এবং তাদের ভ্যালিডেশনের পরিষ্কার এবং নিপুণ জ্ঞান দরকার। সর্টিং টেকনিক প্রয়োগ করার আগে আমাদের চেক করতে হবে ইউজার ইনপুট করা তারিখটি বৈধ কিনা যেমন ২৯-২ শুধু লিপ ইয়ারের জন্য বৈধ।
তারিখ ভ্যালিডেশনের পরে আসে তারিখ সর্ট করা। সর্ট করার জন্য আমরা রিভার্স অর্ডারে যাব: প্রথমে বছর সর্ট, তারপর একই বছরের জন্য মাস সর্ট, এবং একই মাসের জন্য তারিখ সর্ট।
সিলেকশন সর্ট
সিলেকশন সর্ট হলো একটি সর্টিং অ্যালগরিদম যা ন্যূনতম এলিমেন্ট খুঁজে সেটিকে অ্যারের শুরুতে রাখে এবং তারপর অ্যারে ছোট করে। এভাবে, প্রতিটি এলিমেন্টকে তাদের যথাযথ জায়গায় आरোহী ক্রমে রাখা হয়।
এই প্রোগ্রাম ইউজার ইনপুট করা তারিখগুলো সর্ট করার জন্য সিলেকশন সর্টিং টেকনিক ব্যবহার করে।
চলুন ৩টি বোঁঝানো তারিখ নিই এবং সেগুলো সর্ট করি।
ইনপুট: 4 1 2012 31 5 2019 19 12 2012 আউটপুট: 4 1 2012 19 12 2012 31 5 2019
ব্যাখ্যা
যেহেতু সব তারিখ বৈধ, প্রোগ্রামটি এই তারিখগুলো সর্ট করবে এবং সেগুলোকে আরোহী ক্রমে সাজাবে।
উদাহরণ
#include<iostream> using namespace std; struct date{ int day; int month; int year; int valid = 1; }; int datevalidate(int dd, int mm, int yy){ if(yy>=100 && yy<=9999){ if(mm>=1 && mm<=12){ if((dd>=1 && dd<=31) && (mm==1 || mm==3 || mm==5 || mm==7 || mm==8 || mm==10 || mm==12)); else if((dd>=1 && dd<=30) && (mm==4 || mm==6 || mm==9 || mm==11)); else if((dd>=1 && dd<=28) && (mm==2)); else if(dd==29 && mm==2 && (yy%400==0 ||(yy%4==0 && yy%100!=0))); else return 0; } else{ return 0; } } else { return 0; } } int main(){ cout<<"Enter 5 dates to be sorted:\n"; struct date input[5]; for(int i=0; i<5; i++){ cout<<"Enter Date "<<(i+1)<<" : "; cin>>input[i].day; cin>>input[i].month; cin>>input[i].year; input[i].valid = datevalidate(input[i].day, input[i].month, input[i].year); if(input[i].valid){ cout<<"Date is invalid"; exit(0); } } for (int i=0; i<4; i++){ for (int j=i+1; j<5; j++){ if (input[i].year > input[j].year){ struct date temp = input[i]; input[i] = input[j]; input[j] = temp; } else if (input[i].year == input[j].year && input[i].month > input[j].month){ struct date temp = input[i]; input[i] = input[j]; input[j] = temp; } else if (input[i].year == input[j].year && input[i].month == input[j].month && input[i].day > input[j].day){ struct date temp = input[i]; input[i] = input[j]; input[j] = temp; } } } cout<<"Sorted dates are : \n"; for(int i=0; i<5; i++){ cout<<input[i].day<<" "<<input[i].month<<" "<<input[i].year; cout<<endl; } }
আউটপুট
Enter 5 dates to be sorted: Enter date 1 : 5 12 2019 Enter date 2 : 1 2 2012 Enter date 3 : 11 6 2324 Enter date 4 : 29 2 2652 Enter date 5 : 16 5 2012 Sorted dates are : 1 2 2012 16 5 2012 5 12 2019 11 6 2324 29 2 2652