您的位置:首页 > 编程语言 > C语言/C++

华为机试电话号码翻译C++实现

2015-04-09 21:23 260 查看
输入DoubleTwothree

输出223

输入DoubleDoubleTwo

输出ERROR

不能出现空格逗号数字之类非法字符否则输出ERROR

1Twot3

输出ERROR
#include<iostream>
#include<string>
using namespace std;
int main()
{
char *a[11]={"Zero","One","Two","Three","Four","Five","Six","Seven",
"Eight","Nine","Double"};
string s1;
getline(cin,s1);
int length=s1.size();
string substr1;
int flag=0;
char* out[100];
int m=0;
for (int i=0;i<length;i++)
{
if (s1[i]>122||s1[i]<65||(s1[i]>90&&s1[i]<97))
{
cout<<"ERROR"<<endl;
return 0;
}
else
{
for (int j=i+2;j<length&&(j-i)<6;j++)
{
substr1=s1.substr(i,j-i+1);//起始位置与截取的长度
if (!substr1.compare(a[10]))//判断double的出现
{
if (i==length-6)//如果出现在末尾则错误返回
{
cout<<"ERROR"<<endl;
return 0;
}
else
{
if (flag)//用flag标示double出现的次数,如果不为0则说明出现了第二次
{
cout<<"ERROR"<<endl;
return 0;
}
}
flag=1;//标示double出现的第一次
}
else
{
for (int k=0;k<10;k++)//判断单词是非double的比较
{
if (!substr1.compare(a[k]))
{
if (flag)//如果double出现了1次则多添加一个改数字
{
out[m++]=a[k];
out[m++]=a[k];
flag=0;
break;
}
else
{
out[m++]=a[k];
break;
}
}
}
}

}
}
}
for (int p=0;p<m;p++)
{
for (int q=0;q<10;q++)
{
if (out[p]==a[q])
{
cout<<q;
}
}
}
cout<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: