CSP 3-10 maya Maya历法

Rewrite using std::map
This commit is contained in:
cyp0633 2021-09-09 17:07:49 +08:00
parent 0a1ce3ab13
commit daeddeb9c0
1 changed files with 3 additions and 82 deletions

View File

@ -1,9 +1,10 @@
//Maya历法
#include <cstdio>
#include <iostream>
#include <map>
using namespace std;
int getHaabMonthDay(const string &m);
string getTzolkinDayName[21] = {"ahau", "imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik", "lamat", "muluk", "ok", "chuen", "eb", "ben", "ix", "mem", "cib", "caban", "eznab", "canac", "ahau"};
map<string, int> haabMonthDay = {{"pop", 0}, {"no", 20}, {"zip", 40}, {"zotz", 60}, {"tzec", 80}, {"xul", 100}, {"yoxkin", 120}, {"mol", 140}, {"chen", 160}, {"yax", 180}, {"zac", 200}, {"ceh", 220}, {"mac", 240}, {"kankin", 260}, {"muan", 280}, {"pax", 300}, {"koyab", 320}, {"cumhu", 340}, {"uayet", 360}};
int main()
{
int dayFromCreation, haabDay, haabMonth, haabYear, n, tzolkinName, tzolkinNumber, tzolkinYear;
@ -15,7 +16,7 @@ int main()
size_t pos = tempStr.find('.');
dayStr = tempStr.substr(0, pos);
monthName = tempStr.substr(pos + 1);
haabMonth = getHaabMonthDay(monthName);
haabMonth = haabMonthDay[monthName];
haabDay = stoi(dayStr);
dayFromCreation = haabYear * 365 + haabMonth + haabDay;
tzolkinYear = dayFromCreation / 260;
@ -28,84 +29,4 @@ int main()
tzolkinName = dayFromCreation % 20;
cout << tzolkinNumber << ' ' << getTzolkinDayName[tzolkinName + 1] << ' ' << tzolkinYear << endl;
}
}
int getHaabMonthDay(const string &m)
{
if (m == "pop")
{
return 0;
}
if (m == "no")
{
return 20;
}
if (m == "zip")
{
return 40;
}
if (m == "zotz")
{
return 60;
}
if (m == "tzec")
{
return 80;
}
if (m == "xul")
{
return 100;
}
if (m == "yoxkin")
{
return 120;
}
if (m == "mol")
{
return 140;
}
if (m == "chen")
{
return 160;
}
if (m == "yax")
{
return 180;
}
if (m == "zac")
{
return 200;
}
if (m == "ceh")
{
return 220;
}
if (m == "mac")
{
return 240;
}
if (m == "kankin")
{
return 260;
}
if (m == "muan")
{
return 280;
}
if (m == "pax")
{
return 300;
}
if (m == "koyab")
{
return 320;
}
if (m == "cumhu")
{
return 340;
}
if (m == "uayet")
{
return 360;
}
return -1;
}