UVA537 - Artificial Intelligence?

题目http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=96&page=show_problem&problem=478

依次搜查就行了 要注意m,k,M这几个不是标准单位 要进行换算一下,写着有点麻烦,多注意一些。

View Code
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include<string.h>
  4 char c[1001];
  5 float swit(char f,int j)
  6 {
  7     float s = 0,x;
  8     int y,i;
  9     i = j;
 10     while(c[j]>='0'&&c[j]<='9'&&j<strlen(c))
 11     {
 12         j++;
 13     }
 14     x = 1;
 15     y = j;
 16     y--;
 17     while(y>=i)
 18     {
 19         s += (c[y]-48)*x;
 20         x *= 10;
 21         y--;
 22     }
 23     x = 1.0/10;
 24     if(c[j] == '.')
 25     {
 26         j++;
 27         while(c[j]>='0'&&c[j]<='9'&&j<strlen(c))
 28         {
 29             s += (c[j]-48)*x;
 30             x = x/10;
 31             j++;
 32         }
 33     }
 34     if(j!=strlen(c))
 35     {
 36         if(c[j] == 'm')
 37             s = s/1000;
 38         if(c[j] == 'k' )
 39         s = s*1000;
 40         if(c[j] == 'M')
 41         s = s*1000000;
 42     }
 43     return s;
 44 }
 45 int main()
 46 {
 47     int t, i, j, k,count,flag,a[300],g = 0;
 48     float s,x,I,v,P;
 49     scanf("%d%*c", &t);
 50     while(t--)
 51     {
 52         g++;
 53         a['U'] = 1;
 54         a['I'] = 1;
 55         a['P'] = 1;
 56         flag = 0;
 57         count = 0;
 58         gets(c);
 59         k = strlen(c);
 60         for(i = 0  ; i < k ; i++)
 61         {
 62             if(i<k-2&&(c[i] == 'U'||c[i] == 'P'||c[i] == 'I')&&c[i+1] == '=')
 63             {
 64                 j = i+2;
 65                 s = swit(c[i],j);
 66 
 67                 if(c[i] == 'U')
 68                 {
 69                     v  = s;
 70                     count++;
 71                     a[c[i]] = 0;
 72                 }
 73                 if(c[i] == 'I')
 74                 {
 75                     I = s;
 76                     count++;
 77                     a[c[i]] = 0;
 78                 }
 79                 if(c[i] == 'P')
 80                 {
 81                     P = s;
 82                     count++;
 83                     flag = 1;
 84                     a[c[i]] = 0;
 85                 }
 86                 if(count == 2)
 87                 {
 88                     break;
 89                 }
 90                 i+=2;
 91             }
 92         }
 93         printf("Problem #%d\n",g);
 94         if(flag == 0)
 95         {
 96             printf("P=%.2fW\n",I*v);
 97         }
 98         else
 99         {
100             if(a['U'] == 0)
101             printf("I=%.2fA\n",P/v);
102             else
103             printf("U=%.2fV\n",P/I);
104         }
105         puts("");
106     }
107     return 0;
108 }

 

posted @ 2012-05-27 21:33  _雨  阅读(215)  评论(0编辑  收藏  举报