UVA - 537 Artificial Intelligence?
题目大意:应用公式 P = U*I,输入一段题目,给出 U、I或P中任意两个量的值,计算第三个量的值。
解题思路:一个字符一个字符地读,用两个变量保存相邻两个字符。当后一个字符读到 ‘=’ 时,将数值保存到前一个字符所指示的对应的量中。
#include<cstring>
#include<cstdio>
int main () {
int h = 0 , n , flag;// m = *0.001 M = *1 000 000 k = * 1 000
double u , i , p;
char c1 , c2 = 0;
scanf("%d", &n );
while( h < n) {
h++; u = 0; i = 0; p = 0;flag = 2;
while( flag ) {
c2 = c1;
c1 = getchar();
if( c1 == '=' ) {
switch(c2) {
case 'U':scanf("%lf", &u );
c1 = getchar();
if( c1 == 'm' ) u *= 0.001;
else if( c1 == 'k' ) u *= 1000;
else if( c1 == 'M' ) u *= 1000000;
break;
case 'I':scanf("%lf", &i );
c1 = getchar();
if( c1 == 'm' ) i *= 0.001;
else if( c1 == 'k' ) i *= 1000;
else if( c1 == 'M' ) i *= 1000000;
break;
case 'P':scanf("%lf", &p );
c1 = getchar();
if( c1 == 'm' ) p *= 0.001;
else if( c1 == 'k' ) p *= 1000;
else if( c1 == 'M' ) p *= 1000000;
break;
}
flag--;
}
}
if( p == 0 )
printf( "Problem #%d\nP=%.2lfW\n" , h , u*i );
else if( u == 0 )
printf("Problem #%d\nU=%.2lfV\n" , h , p/i );
else if( i == 0)
printf("Problem #%d\nI=%.2lfA\n" , h , p/u );
printf("\n");
}
return 0;
}