UVA 1586 Molar mass (数组)

来源:互联网 发布:声音主播用什么软件 编辑:程序博客网 时间:2024/06/06 09:10

题目链接https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4461

题意:给你化学式,求质量

#include <cstdio>#include <cstring>#include <cctype>using namespace std;const int maxn = 100;char str[maxn];int a[4];double arr[4] = {12.01, 1.008, 16.00, 14.01};double sum;int main(){    int t;    scanf("%d", &t);    while (t--){        memset(a, 0, sizeof(a));        scanf("%s", str);        int len = strlen(str);        for (int i = 0; i < len; i++){            if (str[i] == 'C'){                if (isdigit(str[i + 1]) && isdigit(str[i + 2])){                    a[0] += (str[i + 1] - '0') * 10 + (str[i + 2] - '0');                }                else{                    a[0] += isdigit(str[i + 1]) ? str[i + 1] - '0' : 1;                }            }            if (str[i] == 'H'){                if (isdigit(str[i + 1]) && isdigit(str[i + 2])){                    a[1] += (str[i + 1] - '0') * 10 + (str[i + 2] - '0');                }                else{                    a[1] += isdigit(str[i + 1]) ? str[i + 1] - '0' : 1;                }            }            if (str[i] == 'O'){                if (isdigit(str[i + 1]) && isdigit(str[i + 2])){                    a[2] += (str[i + 1] - '0') * 10 + (str[i + 2] - '0');                }                else{                    a[2] += isdigit(str[i + 1]) ? str[i + 1] - '0' : 1;                }            }            if (str[i] == 'N'){                if (isdigit(str[i + 1]) && isdigit(str[i + 2])){                    a[3] += (str[i + 1] - '0') * 10 + (str[i + 2] - '0');                }                else{                    a[3] += isdigit(str[i + 1]) ? str[i + 1] - '0' : 1;                }            }        }        sum = 0.0;        for (int i = 0; i < 4; i++){            sum += a[i] * arr[i];        }        printf("%.3lf\n", sum);    }    return 0;}


0 0