Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để Sắp xếp Ngày sử dụng Sắp xếp Lựa chọn

Ngày là số ngày, tháng và năm. Có nhiều cách khác nhau để hiển thị ngày.

Ở đây, chúng ta có một chương trình để sắp xếp ngày tháng bằng cách sử dụng sắp xếp lựa chọn. Vì vậy, chúng ta hãy tìm hiểu về những thứ được sử dụng trong khái niệm này.

Sắp xếp ngày

Khái niệm sắp xếp ngày tháng cần có kiến ​​thức rõ ràng và thành thạo về ngày tháng và các xác nhận của chúng. Trước khi thử kỹ thuật sắp xếp, chúng ta cần kiểm tra xem ngày do người dùng nhập vào có phải là ngày hợp lệ không, không phải như 29-2 chỉ hợp lệ trong những năm nhuận.

Sau khi xác nhận ngày tháng sẽ đến việc phân loại ngày tháng. Để sắp xếp, chúng ta sẽ sắp xếp theo thứ tự ngược lại các năm rồi sắp xếp các tháng cùng năm và sau đó cho các ngày sắp xếp cùng tháng.

Sắp xếp lựa chọn

Lựa chọn sắp xếp là một thuật toán sắp xếp sắp xếp các phần tử bằng cách tìm phần tử tối thiểu và đặt nó ở đầu mảng sau đó rút gọn mảng. Do đó, đặt mỗi phần tử vào vị trí tương ứng của chúng theo thứ tự tăng dần.

Chương trình này sử dụng kỹ thuật sắp xếp lựa chọn để sắp xếp các ngày do người dùng nhập vào.

Hãy lấy 3 ngày ở dạng không có thứ tự và sau đó sắp xếp các ngày này.

Input :
4  1  2012
31 5  2019
19 12 2012

Output :
4  1  2012
19 12 2012
31 5  2019

Giải thích

Vì tất cả các ngày đều hợp lệ, chương trình sẽ sắp xếp các ngày này và sắp xếp chúng theo thứ tự tăng dần.

Ví dụ

#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;
   }
}

Đầu ra

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