算法竞赛入门经典习题3-2分子量

问题遇到的现象和发生背景

给出一种物质的分子式(不带括号),求其分子量。本题分子式中只包含四种原子,分别为C、H、O、N,原子量分别为12.01,1.008,16.00,14.01。例如,C6H5OH的分子量为94.108g/mol。

问题相关代码,请勿粘贴截图

//习题3-2 分子量
#include
#include
using std::cout;
using std::cin;
using std::endl;
int main()
{
char arr[10000];
double sum(0);
cin >> arr;
cout << strlen(arr) << endl;
for (int i = 0; i < strlen(arr); i++)
{
if (arr[i] = 'C')
{
sum += 12.01;
if (isdigit(arr[i + 1]))
{
double a=(arr[i+1]-1)*12.01;
sum+= a;
}

    }
    if (arr[i] = 'H')
    {
        sum += 1.008;
        if (isdigit(arr[i + 1]))
        {
            double a = (arr[i + 1]-1) * 1.008;
            sum += a;
        }
    }
    if (arr[i] = 'O')
    {
        sum += 16.00;
        if (isdigit(arr[i + 1]))
        {
            double a = (arr[i + 1] - 1) * 16.00;
            sum += a;
        }
    }
    if (arr[i] = 'N')
    {
        sum += 14.01;
        if (isdigit(arr[i + 1]))
        {
            double a = (arr[i + 1] - 1) * 14.01;
            sum += a;
        }
    }
}
cout << sum << "g/mol";

}

运行结果及报错内容

img

我的解答思路和尝试过的方法

只是简单测试一下就发现不对想请教一下各位

我想要达到的结果

读取a[i+1]的时候需要判断是否超出字符串长度,因为arr没有初始化,超出字符串长度的部分是随机值。