날짜 숫자 일, 월 및 연도입니다. 날짜를 표시하는 방법은 다양합니다.
여기에 선택 정렬을 사용하여 날짜를 정렬하는 프로그램이 있습니다. 그럼 이 개념에서 사용되는 것들에 대해 알아봅시다.
날짜 정렬
날짜 정렬의 개념에는 날짜 및 해당 유효성 검사에 대한 명확하고 정통한 지식이 필요합니다. 정렬 기술을 시도하기 전에 사용자가 입력한 날짜가 유효한 날짜인지 확인해야 합니다. 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