UVa1586 - Molar mass

#include<iostream>
#include<string.h>
#include<ctype.h>
#include<stdio.h>
using namespace std;

int main() {
    int n, num = 0, len;
    float cur = 0, sum;
    char s[85];
    float mass[26] = {0};
    mass['C' - 'A'] = 12.01;
    mass['H' - 'A'] = 1.008;
    mass['O' - 'A'] = 16.00;
    mass['N' - 'A'] = 14.01;
    cin >> n;

    for(int i = 0; i < n; i++) {
        cin >> s;
        sum = 0;
        len = strlen(s);

        for(int j = 0; j < len; j++) {
            if(isalpha(s[j])) {
                sum += (cur = mass[s[j] - 'A']);
            } else {
                if(j + 1 < len && isdigit(s[j + 1])) {
                    num = 10 * (num + s[j] - '0');
                } else {
                    sum += cur * (num + s[j] - '0' - 1);
                    num = 0;
                }
            }
        }

        printf("%.3f\n", sum);
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/tangood2/article/details/81100417