您的位置:首页 > 其它

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和数字的分子式,求摩尔质量.注意对数字的处理...找到数字后,先循环一次,查看数字的长度,再获取该数字
让计算机运行了写得这么烂的程序,我对此感到十分抱歉
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: