UVa:537 - Artificial Intelligence?

来源:互联网 发布:好玩不费钱的游戏知乎 编辑:程序博客网 时间:2024/06/16 14:39

大概题意是:根据所给文本中已知的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!

--------------------------------------------------------------------------------------------
0 0