Привет, я не уверен, что это правильное место, чтобы задать этот вопрос.В любом случае я написал этот код, чтобы разобрать формулу молекулы и разделить ее на атомы и количество каждого атома.
Например, если я введу "H2O"
, я получу для массива атомов значение {"H", "O"}
и в количествемассив я получу {2, 1}
.Я не учел количество больше 9, так как не думаю, что есть молекула, которая может связываться с чем-то большим, чем 8.
В любом случае, я довольно новичок, поэтому мне интересноесли этот кусок кода можно сделать лучше?
string formula = "H2O";
int no, k = 0, a = 0;
string atom[10];
int amount[10];
bool flag = true;
stringstream ss(formula);
for(int i = 0; i < formula.size(); ++i)
{
no = atoi(&formula[i]);
if(no == 0 && (flag || islower(formula[i]) ) )
{
cout << "k = " << k << endl;
atom[k] += formula[i];
flag = false;
cout << "FOO1 " << atom[k] << endl;
amount[a] = 1;
}
else if(no != 0)
{
amount[a] = no;
cout << "FOO2 " << amount[a] << endl;
a++;
flag = true;
k++;
}
else
{
k++;
a++;
atom[k] = formula[i];
cout << "FOO3 " << atom[k] << endl;
amount[a] = 1;
flag = false;
}
cout << no << endl;
}