Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

선택 정렬을 사용하여 날짜를 정렬하는 C++ 프로그램

<시간/>

날짜 숫자 일, 월 및 연도입니다. 날짜를 표시하는 방법은 다양합니다.

여기에 선택 정렬을 사용하여 날짜를 정렬하는 프로그램이 있습니다. 그럼 이 개념에서 사용되는 것들에 대해 알아봅시다.

날짜 정렬

날짜 정렬의 개념에는 날짜 및 해당 유효성 검사에 대한 명확하고 정통한 지식이 필요합니다. 정렬 기술을 시도하기 전에 사용자가 입력한 날짜가 유효한 날짜인지 확인해야 합니다. 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