POJ1008 Maya Calendar

题目链接:http://poj.org/problem?id=1008


题目分析:

通过输入的Haab历日期,转化成Tzolkin历日期。

我将Haab历中的月份和holly年分别存入了二维数组中。在输入数据Haab历中的月份可以使用strcmp()函数来与二维数组值进行比较,转化。

要注意年月日的起始日期,有的是以0开始的。


源代码:

/*玛雅历*/
#include <iostream>
#include <string>

using namespace std;

int main()
{
	int n;		//转化的天数
	int y1 = 0, m = 0, d1 = 0;		//Habb历中的年,月,日
	char dot;		//输入的时候的.
	int a = 0, b = 0, y2 = 0, d2 = 0;		//Tzolkin历中的天数字,天名称,年数, 天数

	char c1[20][10] = 
	{
		"null", "pop", "no", "zip", "zotz", "tzec",
		"xul", "yoxkin", "mol", "chen", "yax",
		"zac", "ceh", "mac", "kankin", "muan",
		"pax", "koyab", "cumhu", "uayet"
	};

	char c2[21][10] =
	{
		"null", "imix", "ik", "akbal", "kan", 
		"chicchan","cimi", "manik", "lamat", "muluk",
		"ok","chuen", "eb", "ben", "ix", 
		"mem", "cib", "caban", "eznab", "canac",
		"ahau"
	};
	
	char month1[1][10];
	string day2;

	int i;
	cin>>i;
	cout<<i<<endl;
	while (cin>>d1>>dot>>month1[0]>>y1)
	{
		for (int k = 1;k <= 19; k++)
		{
			if (strcmp(month1[0], c1[k]) == 0)
			{
				m = k;
				break;
			}
			
		}

		if (m <= 19)
		{
			n = 365 * y1 + 20 * (m - 1) + d1;
			y2 = n / 260;		//年数
			d2 = n % 260;		//天数
			a = d2 % 13 + 1;
			b = d2 % 20 + 1;
			
			day2 = c2[b];

			cout<<a<<" "<<day2<<" "<<y2<<endl;
			
		}
		else
		{
			break;
		}
	}
	system("pause");
	return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值