1044 火星数字 测试点2和4没过

题目链接:
1044 火星数字
学习了柳神大大的代码,自己写的地球文转火星文的函数,但测试点2和4过不了 下面是自己写的版本,如果有大佬看出错误原因,请指正,非常感谢!

#include<iostream>
#include<string>
using namespace std;
string s;
int len;
string s1[13] = {"tret","jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};
string s2[13] = {"####","tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};

void h2e()
{
   int t1 = 0,t2 = 0;
  
   string ss1 = s.substr(0,3),ss2;
   if(len > 4) ss2 = s.substr(4,3);

   for(int j = 1;j <= 12;j++)
   {    
        if(ss1 == s1[j] || ss2 == s1[j]) t2 = j;
        if(ss1 == s2[j]) t1 = j;
   }
    cout<< t1*13 + t2;

} 

void e2h(int t)
{   
//    if(t / 13) cout<<s2[t / 13];
//    if((t / 13) &&  ( t % 13 )) cout<<" ";
//    if(t % 13 || t == 0) cout<<s1[t % 13];
    //不明白自己这个版本的e2h为什么错了 
    int i=0,j=0;
    while(num - 13 >= 0)  
	{
		i++;
		num -= 13;
	}
    j = num;
    if(i==0) cout<<s1[j];
    else cout<<s2[i+1]<<" "<<s1[j];
}


int main()
{
     int n;
     cin>>n;
     getchar();
     for(int i=0;i<n;i++)
     {
         getline(cin,s);
         len = s.length();
         
         if(s[0] >= '0' && s[0] <= '9')
            e2h(stoi(s));
         else
            h2e();
        cout<<endl;
     }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菲601

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值