化学方程式的配平检验
第一次去考,有些紧张,第三题本来很简单的,愣是没写出来,放假了有空写了写,自我感觉可读性还可以。
因为ccf官网上还没有开放模拟,我就自己写了个.txt文件检验一下,基本要求都满足了。
主要用了unordered_map作为元素记录,stringstream作为字符串分割工具。
提示
经过大佬提示,尽量用面向过程的思想,少用class。
更新
增加了嵌套括号的判断(增加了一个vector数组,记录每层括号外的数字)运行截图如下:
#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
#include <sstream>
using namespace std;
class elements{
private:
unordered_map<string, int> record; // 记录元素个数
vector<int> stack; // 记录嵌套括号外的数字
bool islower(char& c){
return c >= 'a' && c <= 'z';
}
bool isdigit(char& c){
return c >= '0' && c <= '9';
}
public:
elements(vector<string> words){
stack.push_back(1);
int times = 1; // 记录当前的元素需要乘的倍数
// int outsideNum = 1; // 括号外的数字(现改为局部变量)
int inside = 0; // 记录括号嵌套的层次
int totalNum = 0; // 化学式的系数
for(auto word : words){
for(int i = 0; i < word.size() &&