题意:
通俗一点来说就是将字符串解析成数字并且求和
思路:
跟上一题一样,需要先解析成两个字符串数,然后求和,方法用到了String类的assign函数,其他的就是将字符串对应到数字上去,这种算法很简单,这里就不细讲了
AC代码:
#include <iostream>
#include <string>
using namespace std;
int getnum(string s){
if(s=="zero"){
return 0;
}
if(s=="one"){
return 1;
}
if(s=="two"){
return 2;
}
if(s=="three"){
return 3;
}
if(s=="four"){
return 4;
}
if(s=="five"){
return 5;
}
if(s=="six"){
return 6;
}
if(s=="seven"){
return 7;
}
if(s=="eight"){
return 8;
}
if(s=="nine"){
return 9;
}
}
int split(string s){
string s1,s2;
int a,b;
for(int i=0;i<s.length();i++){
if(s[i]==' '){
s1.assign(s,0,i);
s2.assign(s,i+1,s.length()-i);
a = getnum(s1)*10;
b = getnum(s2);
return a+b;
}
}
return getnum(s); //没有就直接返回
}
int main(){
string s,s1,s2;
int a,b;
while(getline(cin,s,'\n')){
for(int i=0;i<s.length();i++){
if(s[i]=='+'){
s1.assign(s,0,i-1);
s2.assign(s,i+2,(s.length()-4-i));
}
}
//cout<<s1<<""<<s2<<"1"<<endl;
if(s1=="zero" && s2=="zero"){
return 0;
}
a = split(s1);
b = split(s2);
cout<<a+b<<endl;
}
return 0;
}