您的位置:首页 > 其它

uva - 537 - Artificial Intelligence?

2014-02-02 22:00 274 查看
#include <stdio.h>
#include <string.h>
#include <math.h>
char s[1000];

double Calculte (char ss[])
{
    int len = 0, flag = 0;
    len = strlen(ss);
    double cal = 0;
    for (int i = 0; i < len; i++)
    {
        if (ss[i] == '.')
        {
            flag = i;
            break;
        }
    }
    if (flag)
    {
        for (int i = len-1; i > flag; i--)
            cal += (ss[i] - 48) * pow((float)10, (flag-i));
        for (int i = flag-1; i >=0; i --)
            cal += (ss[i] - 48) * pow((float)10, (flag-i-1));
    }
    else
    {
        for (int i = len-1; i >= 0; i--)
            cal += (ss[i] - 48) * pow((float)10, (len-i-1));
    }
    return cal;
}

int main()
{
    int  N;
    scanf("%d", &N);
    getchar();
    for (int l = 1; l <= N; l++)
    {
        double I = 0, P = 0, U = 0;
        int flag_p = 0, flag_i = 0, flag_u = 0;
        char num[10];
        gets(s);
        int len = strlen(s);
        for (int i = 0; i < len; i++)
        {
            memset(num, '\0', sizeof(num));
            if (s[i] == 'P' && s[i+1] == '=')
            {
                flag_p = 1;
                i = i+2;
                int temp = i;
                if (s[i] == '-')
                    i++;
                int j;
                for (j = 0; (s[i] <= '9' && s[i] >= '0') || s[i] == '.' ; j++, i++ )
                    num[j] = s[i];
                num[j] = '\0';
                switch(s[i])
                {
                case 'm':
                    P = Calculte(num) * 0.001;
                    break;
                case 'k':
                    P = Calculte(num) * 1000;
                    break;
                case 'M':
                    P = Calculte(num) * 1000000;
                    break;
                default :
                    P = Calculte(num);
                }
                if (s[temp] == '-')
                    P *= -1;
            }

            if (s[i] == 'I' && s[i+1] == '=')
            {
                flag_i = 1;
                i = i+2;
                int temp = i;
                if (s[i] == '-')
                    i++;
                int j;
                for (j = 0; (s[i] <= '9' && s[i] >= '0') || s[i] == '.'; j++, i++ )
                    num[j] = s[i];
                num[j] = '\0';
                switch(s[i])
                {
                case 'm':
                    I = Calculte(num) * 0.001;
                    break;
                case 'k':
                    I = Calculte(num) * 1000;
                    break;
                case 'M':
                    I = Calculte(num) * 1000000;
                    break;
                default :
                    I = Calculte(num);
                }
                if (s[temp] == '-')
                    I *= -1;
            }

            if (s[i] == 'U' && s[i+1] == '=')
            {
                flag_u = 1;
                i = i+2;
                int temp = i;
                if (s[i] == '-')
                    i++;
                int j;
                for (j = 0; (s[i] <= '9' && s[i] >= '0') || s[i] == '.'; j++, i++ )
                    num[j] = s[i];
                num[j] = '\0';
                switch(s[i])
                {
                case 'm':
                    U = Calculte(num) * 0.001;
                    break;
                case 'k':
                    U = Calculte(num) * 1000;
                    break;
                case 'M':
                    U = Calculte(num) * 1000000;
                    break;
                default :
                    U = Calculte(num);
                }
                if (s[temp] == '-')
                    U *= -1;
            }
        }
        printf("Problem #%d\n", l);
        if (flag_p && flag_i)
            printf("U=%.2lfV\n", P/I);
        else if (flag_p && flag_u)
            printf("I=%.2lfA\n", P/U);
        else if (flag_i && flag_u)
            printf("P=%.2lfW\n", I*U);
        putchar('\n');
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: