View Code of Problem 94

#include<bits/stdc++.h>
using namespace std;

int calc(string s) {
	//操作类型
	char op = s[0];
	int startPos = 1,endPos = 1;
	//切割字符
	vector<int> v;
	while (true) {
		endPos = s.find(' ', startPos+1);
		if (endPos == -1) {
			int temp = stoi(s.substr(startPos+1, s.length()-startPos-1));
			v.push_back(temp);
			break;
		}
		else {
			int temp = stoi( s.substr(startPos, endPos-startPos));
			v.push_back(temp);
			startPos = endPos;
		}
	}
	//计算结果
	int res = v[0];
	if (op == '+') {
		for (int i = 1; i < v.size(); i++) {
			res += v[i];
		}
	}
	else if (op == '-') {
		for (int i = 1; i < v.size(); i++) {
			res -= v[i];
		}
	}
	if (op == '*') {
		for (int i = 1; i < v.size(); i++) {
			res *= v[i];
		}
	}
	if (op == '/') {
		for (int i = 1; i < v.size(); i++) {
			res /= v[i];
		}
	}
	return res;
}

int main() {
	string s;
	getline(cin, s);
	
	int startPos = 0;
	int endPos = 0;
	int len = s.length();
	for (int i = 0; i < len; ) {
		if (s[i] == '(') {
			startPos = i;
			i++;
		}
		else if(s[i]==')') {
			endPos = i;
			string temp = s.substr(startPos + 1, endPos - startPos - 1);
			//替换结果
			int res = calc(temp);
			s.replace(startPos, endPos - startPos+1, to_string(res));
			i = 0;
			len = s.length();
		}
		else {
			i++;
		}
	}

	cout << s;
	return 0;
}

Double click to view unformatted code.


Back to problem 94