表格怎麼一鍵排序?有一些日期,日期格式為“MM/DD/YYYY”編程将其按日期大小排列,下面我們就來聊聊關于表格怎麼一鍵排序?接下來我們就一起去了解一下吧!
有一些日期,日期格式為“MM/DD/YYYY”。編程将其按日期大小排列。
樣例輸入
15/12/1999
10/21/2003
10/22/2003
02/12/2004
11/30/2005
12/31/2005
15/12/1999
10/21/2003
10/22/2003
02/12/2004
11/30/2005
12/31/2005
#include <iostream>
using namespace std;
struct Date
{
char d[20];
};
int if_ear_is_earlier(Date,Date);
int year(Date);
int month(Date);
int day(Date);
int wei(char);
int main()
{
const int arsize=6;//數組的大小可自定義
Date date[arsize];
//輸入日期
for(int i=0;i<arsize;i )
{
cin>>date[i].d;
}
//比較大小,用選擇排序法
for(int i=0;i<arsize-1;i )
{// Date ear=date[i];
for(int j=i;j<arsize;j )
if(if_ear_is_earlier(date[i],date[j]))//調用函數,判斷是否date[i]代表的日期更早
;else
{
//如果不,則進行數值對換,使date[i]的日期更早
Date t=date[i];
date[i]=date[j];
date[j]=t;
}
}
// cout<<endl;
for(int i=0;i<arsize;i )
{
cout<<date[i].d<<endl;
}
return 0;
}
int if_ear_is_earlier(Date ear,Date date1)
{
//判斷ear是否比date1早,是則返回1,不是則返回0
//首先比較年份
int year_ear=year(ear);//調用函數,使返回ear所表示的年的值
int year_date1=year(date1);
//進行判斷
if(year_ear<year_date1)
return 1;else
if(year_ear>year_date1)
return 0;else
{
int month_ear=month(ear);//調用函數,比較月份
int month_date1=month(date1);
if(month_ear<month_date1)
return 1;else
if(month_ear>month_date1)
return 0;else
{
int day_ear=day(ear);//調用函數,比較日
int day_date1=day(date1);
if(day_ear<day_date1)
return 1;else
return 0;
}
}
}
int year(Date date)//将年份的字符轉換為數字
{
return wei(date.d[6])*1000 wei(date.d[7])*100 wei(date.d[8])*10 wei(date.d[9]); //調用wei函數
}
int month(Date date)//将月份的字符轉換為數字
{
return wei(date.d[0])*10 wei(date.d[1]);
}
int day(Date date)//将日期的字符轉換為數字
{
return wei(date.d[3])*10 wei(date.d[4]);
}
int wei(char c)//将字符轉換為數字
{
int n=c-'0';
return n;
}
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!