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