UVa1586 分子量
2018-03-19 16:47
232 查看
//分子量 #include <iostream> #include <string> #include <cctype> using namespace std; const double C = 12.01; const double H = 1.008; const double O = 16.00; const double N = 14.01; double cal(const char& c) { if (c == 'C') return C; if (c == 'H') return H; if (c == 'O') return O; if (c == 'N') return N; return -1; } int pow(const int& a) { if (a == 0) return 1; return 10 * pow(a - 1); } int main(void) { //输入分子式 string str; while (cin >> str) { double value = 0; for (int i = 0; i < str.length(); i++) { if (isalpha(str[i])) { int count = 0; int len = 0; if (i == str.length() - 1 || isalpha(str[i + 1])) value += cal(str[i]); else { for (int j = i + 1; j < str.length(); j++) if (isalpha(str[j])) break; else len++; for (int j = i + 1; j < str.length(); j++) { len--; if (isalpha(str[j])) break; else count += pow(len) * (str[j] - '0'); } cout << count << endl; value += cal(str[i]) * count; } } } cout << value << "g/mol\n"; } }
输入一个含CHON和数字的分子式,求摩尔质量.注意对数字的处理...找到数字后,先循环一次,查看数字的长度,再获取该数字
让计算机运行了写得这么烂的程序,我对此感到十分抱歉
相关文章推荐
- 分子量(UVa1586)
- b2bf 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
- 水题 UVA 1586 - Ancient Cipher化学式分子量计算
- 分子量UVa1586
- 习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
- 小紫书 习题 3-2(UVA 1586) 分子量(Molar mass)
- UVa1586-Molar Mass(分子量)
- 分子量 (Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
- UVa 1586 Molar Mass(分子量)
- 分子量(Molar Mass,UVa 1586)水题
- Uva1586-Molar Mass-分子量
- UVa 1586 Molar mass(分子量)
- Uva 1586 分子量
- 习题3-2 分子量 UVa1586
- uva1586分子量
- uva 1586 - Molar mass(分子量)
- UVA 1586 分子量(Molar Mass)
- 算法竞赛入门竞赛 习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
- 习题 3-2 分子量 (ACM/ICPC Seoul 2007, UVa1586)
- UVA1586 分子量 元素下标任意位数版本