hdoj1228

不错的字符串模拟题。。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<string>
using namespace std;
string number[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
int changeadd(char add[])
{
	int i=0,j,cnt,part=0;
	while(add[i]!='\0')
	{
		char tmp[1000];
		cnt=0;
		while(add[i]!=' ' && add[i]!='\0')
		{
			tmp[cnt++]=add[i];
			i++;
		}
		tmp[cnt]='\0';
		string str=tmp;
		for(j=0;j<=9;j++)
			if(number[j]==str)
			{
				part=part*10+j;
				break;
			}
		if(add[i]!='\0')
			i++;
	}
	return part;
}
int main()
{
	char s[1000];
	gets(s);
	while(strcmp(s,"zero + zero =")!=0)
	{
		int i,j;
		int len=strlen(s);
		char add1[1000],add2[1000];
		int cnt1=0,cnt2=0;
		bool flag=0;
		for(i=0;i<=len-2;i++)
		{
			if(!flag)
			{
				if(s[i]!='+')
					add1[cnt1++]=s[i];
				else
					flag=1;
			}
			else
			{
				if(s[i-1]!='+')
					add2[cnt2++]=s[i];
			}
		}
		add1[cnt1++]='\0';
		add2[cnt2++]='\0';
		int part1=changeadd(add1);
		int part2=changeadd(add2);
		printf("%d\n",part1+part2);
		gets(s);
	}
        //system("pause");
        return 0;
}