Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ สำหรับการจัดเรียงวันที่โดยใช้ Selection Sort


วันที่ คือ เลขวัน เดือน ปี มีหลายวิธีในการแสดงวันที่

ที่นี่ เรามีโปรแกรมสำหรับจัดเรียงวันที่โดยใช้การเรียงลำดับการเลือก เรามาเรียนรู้เกี่ยวกับสิ่งต่าง ๆ ที่ใช้ในแนวคิดนี้กันเถอะ

การเรียงลำดับวันที่

แนวความคิดในการเรียงลำดับวันที่ต้องการความรู้ที่ชัดเจนและรอบรู้เกี่ยวกับวันที่และการตรวจสอบความถูกต้อง ก่อนที่เราจะลองใช้เทคนิคการเรียงลำดับ เราจำเป็นต้องตรวจสอบว่าวันที่ที่ป้อนโดยผู้ใช้เป็นวันที่ที่ถูกต้อง ไม่เหมือน 29-2 นั้นใช้ได้สำหรับปีอธิกสุรทินเท่านั้น

หลังจากตรวจสอบวันที่แล้ว การเรียงลำดับวันที่จะมาถึง สำหรับการเรียงลำดับ เราจะดำเนินการในปีของการเรียงลำดับแบบย้อนกลับ จากนั้นสำหรับเดือนที่เรียงลำดับในปีเดียวกัน และวันที่เรียงลำดับในเดือนเดียวกัน

การเรียงลำดับการเลือก

การเรียงลำดับการเลือกเป็นอัลกอริธึมการเรียงลำดับที่จัดเรียงองค์ประกอบโดยการค้นหาองค์ประกอบขั้นต่ำและวางไว้ที่จุดเริ่มต้นของอาร์เรย์แล้วย่ออาร์เรย์ให้สั้นลง ดังนั้นการวางแต่ละองค์ประกอบในตำแหน่งตามลำดับจากน้อยไปมาก

โปรแกรมนี้ใช้เทคนิคการเรียงลำดับการเลือกสำหรับการเรียงลำดับวันที่ที่ผู้ใช้ป้อน

ลองหาวันที่ในรูปแบบไม่เรียงลำดับกัน 3 วัน แล้วจึงจัดเรียงวันที่เหล่านี้

Input :
4  1  2012
31 5  2019
19 12 2012

Output :
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