View Code of Problem 16

#include<vector>
#include<string>
#include<iostream>

using namespace std;

int convert2value(string str) {
	if (str.compare("one") == 0)
		return 1;
	else if (str.compare("two") == 0)
		return 2;
	else if (str.compare("three") == 0)
		return 3;
	else if (str.compare("four") == 0)
		return 4;
	else if (str.compare("five") == 0)
		return 5;
	else if (str.compare("six") == 0)
		return 6;
	else if (str.compare("seven") == 0)
		return 7;
	else if (str.compare("eight") == 0)
		return 8;
	else if (str.compare("nine") == 0)
		return 9;
	else if (str.compare("zero") == 0)
		return 0;
	else {
		int result = 0;
		for (int i = 0; i < str.length(); i++) {
			result *= 10;
			result += str[i] - '0';
		}
		return result;
	}
}

string value2string(int value) {
	string result = "";
	while (value) {
		int t = value % 10;
		string temp;
		switch (t)
		{
		case 0:
			temp = "zero";
			break;
		case 1:
			temp = "one";
			break;
		case 2:
			temp = "two";
			break;
		case 3:
			temp = "three";
			break;
		case 4:
			temp = "four";
			break;
		case 5:
			temp = "five";
			break;
		case 6:
			temp = "six";
			break;
		case 7:
			temp = "seven";
			break;
		case 8:
			temp = "eight";
			break;
		case 9:
			temp = "nine";
			break;
		}
		if (result.compare("") == 0)
			result = temp;
		else 
			result =  temp + " " + result;
		value /= 10;
	}
	return result;
}

int main() {
	int T;
	cin >> T;
	for (int i = 0; i < T; i++) {
		int type;
		cin >> type;
		int s1 = 0, s2 = 0, flag = 0;
		while (1) {
			string str;
			cin >> str;
			if (str.compare("+")==0)
				flag = 1; //第一个因子已经读入
			else if (str.compare("=")==0) { //算结果
				if (type == 0) //出整数
					cout << s1 + s2 <<endl;
				else //出英文
					cout << value2string(s1 + s2) << endl;
				break;
			}
			else { //读入的是因子
				if (flag == 0) {
					s1 *= 10;
					s1 += convert2value(str);
				}
				else {
					s2 *= 10;
					s2 += convert2value(str);
				}
			}
		}
	}

	return 0;
}

Double click to view unformatted code.


Back to problem 16