#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;
}
uva - 537 - Artificial Intelligence?
最新推荐文章于 2021-07-28 14:07:17 发布
