A.537 - Artificial Intelligence?

/**本题计算三个公式中的一个: P=U*I,U=P/I,I=P/U;

先找到'=',存储它的前一个字符于S[],计算它后面的数字之和,并转换为合法的数据 **/

int main()
{
    char str[1024],S[4],SS[4];
    double num[4];
    int n;
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
    {
        getchar();
        gets(str);
        int k=0,K=0,kK=0,len=strlen(str);
        for(int i=1; i<len;)
        {
            if(str[i]=='=')
            {
                S[k++]=str[i-1];
                i++;
                int sum=0,j,p=0,q;
                for(j=i; j<len; j++)///转换为合法数据
                {
                    if(!(str[j]>='0'&&str[j]<='9'||str[j]=='.'))
                        break;
                    else if(!(str[j]=='.'))
                        sum=10*sum+str[j]-'0';
                    else if(str[j]=='.')
                        p=j;
                }
                if(p==0)
                    p=j-1;
                q=j-1;
                int dit=q-p;
                double SUM=(double )sum;
                while(dit--)
                    SUM/=10.0;
                switch(str[j])
                {
                    case 'm':SUM*=0.001;j++;break;
                    case 'k':SUM*=1000.0;j++;break;
                    case 'M':SUM*=1000000.0;j++;break;
                }///转换为合法数据
                SS[kK++]=str[j];
                num[K++]=SUM;
                i=++j;
            }
            else
                i++;
        }
        printf("Problem #%d\n",i);
        if(S[0]=='U'&&S[1]=='I'||S[0]=='I'&&S[1]=='U')  printf("P=%.2lfW\n",num[0]*num[1]);
        else if(S[0]=='P'&&S[1]=='U')  printf("I=%.2lfA\n",num[0]/num[1]);
        else if(S[0]=='U'&&S[1]=='P')  printf("I=%.2lfA\n",num[1]/num[0]);
        else if(S[0]=='P'&&S[1]=='I')  printf("U=%.2lfV\n",num[0]/num[1]);
        else if(S[0]=='I'&&S[1]=='P')  printf("U=%.2lfV\n",num[1]/num[0]);
        putchar('\n');
    }
    return 0;
}

你可能感兴趣的:(String,uva)