您的位置:首页 > 其它

UVa:537 - Artificial Intelligence?

2014-04-21 13:49 295 查看
大概题意是:根据所给文本中已知的P、U、I 中的其中两个量的值,运算出第三个量的值。

#include<stdio.h>
#include<string.h>
const int MAXS=1000000+10;
char s[MAXS],m[MAXS];
int main()
{
    int T;
    while(scanf("%d",&T)!=EOF){
        getchar();
        for(int k=1;k<=T;k++){
            gets(s);
            int leng=strlen(s);
            double P=-1.0, I=-1.0, U=-1.0;
            for(int i=0;i<leng;i++){
                if(s[i]=='P'&&s[i+1]=='='){
                    memset(m,0,sizeof(m));
                    int j,t;
                    for(j=i+2,t=0;;j++,t++){
                        if(!(s[j]>=48&&s[j]<=57||s[j]=='.'))
                            break;
                        m[t]=s[j];
                    }
                    sscanf(m,"%lf",&P);
                    if(s[j]=='m')
                        P=P*0.001;
                    if(s[j]=='k')
                        P=P*1000;
                    if(s[j]=='M')
                        P=P*1000000;
                }
                if(s[i]=='U'&&s[i+1]=='='){
                    memset(m,0,sizeof(m));
                    int j,t;
                    for(j=i+2,t=0;;j++,t++){
                        if(!(s[j]>=48&&s[j]<=57||s[j]=='.'))
                            break;
                        m[t]=s[j];
                    }
                    sscanf(m,"%lf",&U);
                    if(s[j]=='m')
                        U=U*0.001;
                    if(s[j]=='k')
                        U=U*1000;
                    if(s[j]=='M')
                        U=U*1000000;
                }
                if(s[i]=='I'&&s[i+1]=='='){
                    memset(m,0,sizeof(m));
                    int j,t;
                    for(j=i+2,t=0;;j++,t++){
                        if(!(s[j]>=48&&s[j]<=57||s[j]=='.'))
                            break;
                        m[t]=s[j];
                    }
                    sscanf(m,"%lf",&I);
                    if(s[j]=='m')
                        I=I*0.001;
                    if(s[j]=='k')
                        I=I*1000;
                    if(s[j]=='M')
                        I=I*1000000;
                }
            }
            printf("Problem #%d\n",k);
            if(P!=-1.0&&I!=-1.0)
                printf("U=%.2lfV\n",P/I);
            if(P!=-1.0&&U!=-1.0)
                printf("I=%.2lfA\n",P/U);
            if(U!=-1.0&&I!=-1.0)
                printf("P=%.2lfW\n",U*I);
            printf("\n");
        }
    }
    return 0;
}


--------------------------------------------------------------------------------------------

Keep It Simple,Stupid!

--------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: