一只特立独行的猪


私信TA

用户名:peaker

访问量:905

签 名:

等  级
排  名 27880
经  验 502
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 西华大学
专  业

  自我简介:

解题思路:

题比较简答,但比较复杂
注意事项:
1.是否为闰年

2.平月大月

3.对00年的特殊处理

4.相同时间的去除

5.排序
参考代码:

#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <set>
using namespace std;
//首先判断是否闰年
set<string>s;
bool isrun(int n)
{
	if (n % 100 == 0)
	{
		if (n % 400 == 0)
			return true;
		return false;
	}
	else {
		if (n % 4 == 0 && n % 100 != 0)
			return true;
		return false;
	}
}
int string2int(string str)
{
	int n;
	stringstream ss;
	ss << str;
	ss >> n;
	return n;
}
string int2string(int n)
{
	string s;
	stringstream ss;
	ss << n;
	ss >> s;
	return s;
}
bool isProData(int mon, int day)
{
	if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12)
	{
		if (day <= 31)
			return true;
		return false;
	}
	else {
		if (day <= 30)
			return true;
		return false;
	}
}
bool isdata(string year, string mon, string day)
{
	int yearInt = string2int(year);
	int monInt = string2int(mon);
	int dayInt = string2int(day);
	//先去除月份
	if (monInt > 12 || monInt <= 0)
		return false;
	if (dayInt <= 0 || dayInt >= 32)
		return false;
	if (yearInt >= 60)
		yearInt += 1900;
	else
		yearInt += 2000;
	if (isrun(yearInt))
	{
		if (monInt == 2)
		{
			if(dayInt > 0 && dayInt <= 29)
				return true;
			else {
				return false;
			}
		}
		else
		{
			return isProData(monInt, dayInt);
		}
	}
	//不是闰年
	else {
		if (monInt == 2)
		{
			if (dayInt > 0 && dayInt < 29)
				return true;
			else {
				return false;
			}
		}
		else
		{
			return isProData(monInt, dayInt);
		}
	}
}
void print(string a, string b, string c)
{
	int time1 = string2int(a);
	if (time1 >= 60)
		time1 += 1900;
	else
		time1 += 2000;
	a = int2string(time1);
	s.insert(a + "-" + b + "-" + c);
}
int main()
{
	string data;
	cin >> data;
	string t1, t2, t3;
	//取出三个时间
	t1 = data.substr(0, 2);
	t2 = data.substr(3, 2);
	t3 = data.substr(6);
	//年月日
	if (isdata(t1,t2,t3))
	{
		print(t1, t2, t3);
	}
	//月日年
	if (isdata(t3, t1, t2))
	{
		print(t3, t1, t2);
	}
	//日月年
	if (isdata(t3, t2, t1))
	{
		print(t3, t2, t1);
	}
	set<string>::iterator it = s.begin();
	for (it; it != s.end(); it++)
		cout << *it << endl;
	return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区