Uva-1586 分子量

//Uva-1586
#include<iostream>
#include<string>
using namespace std;

#define LOCAL

int main(){

#ifdef LOCAL 
    FILE *fin,*fout;
    fin = freopen("xt3-2in.txt","r",stdin);
    fout= freopen("xt3-2out.txt","w",stdout);
#endif //LOCAL
    int n;cin>>n;
    float sum;
    string s;
    while(n--){
        cin>>s;
        int i=0;
        sum=0;
        for(;s[i];){
            switch(s[i]){
                case 'C': 
                if(s[i+1]&&s[i+2]&&isdigit(s[i+1])&&isdigit(s[i+2])){
                //有后兩位且為數(shù)字 
                    sum+=12.01*((int)(s[i+1]-'0')*10+(int)(s[i+2]-'0'));
                    i+=3;
                }
                else if(s[i+1]&&isdigit(s[i+1])){
                    //有后1位且為數(shù)字
                    sum+=12.01*(int)(s[i+1]-'0');
                    i+=2;
                }
                else{
                    //有后兩位,不為數(shù)字
                     sum+=12.01;
                     i++; 
                }
                break;//C
                case 'H': 
                if(s[i+1]&&s[i+2]&&isdigit(s[i+1])&&isdigit(s[i+2])){
                //有后兩位且為數(shù)字 
                    sum+=1.008*((int)(s[i+1]-'0')*10+(int)(s[i+2]-'0'));
                    i+=3;
                }
                else if(s[i+1]&&isdigit(s[i+1])){
                    //有后1位且為數(shù)字
                    sum+=1.008*(int)(s[i+1]-'0');
                    i+=2;
                }
                else{
                    //有后兩位,不為數(shù)字
                     sum+=1.008;
                     i++; 
                }
                break;//H
                case 'O': 
                if(s[i+1]&&s[i+2]&&isdigit(s[i+1])&&isdigit(s[i+2])){
                //有后兩位且為數(shù)字 
                    sum+=16.00*((int)(s[i+1]-'0')*10+(int)(s[i+2]-'0'));
                    i+=3;
                }
                else if(s[i+1]&&isdigit(s[i+1])){
                    //有后1位且為數(shù)字
                    sum+=16.00*(int)(s[i+1]-'0');
                    i+=2;
                }
                else{
                    //有后兩位,不為數(shù)字
                     sum+=16.00;
                     i++; 
                }
                break;//O   
                case 'N': 
                if(s[i+1]&&s[i+2]&&isdigit(s[i+1])&&isdigit(s[i+2])){
                //有后兩位且為數(shù)字 
                    sum+=14.01*((int)(s[i+1]-'0')*10+(int)(s[i+2]-'0'));
                    i+=3;
                }
                else if(s[i+1]&&isdigit(s[i+1])){
                    //有后1位且為數(shù)字
                    sum+=14.01*(int)(s[i+1]-'0');
                    i+=2;
                }
                else{
                    //有后兩位,不為數(shù)字
                     sum+=14.01;
                     i++; 
                }
                break;//N   
        
            }
        }
        printf("%.3lf\n",sum);
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容