2014年9月6日星期六

[UVa] 537 - Artificial Intelligence?


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char line[10000]={'\0'};

int main(){
  //freopen("input.txt", "r", stdin);

  int n;
  scanf("%d",&n);
  getchar();
  int cases=n;
  while(n--){
    printf("Problem #%d\n",cases-n); //輸出problem數
    gets(line);
 double P=0,U=0,I=0;
 int enableP=0, enableU=0, enableI=0; //宣告是否出現變數的檢查變數
    for(int i=0; i<strlen(line); i++){ 
   char buffer[1000];
   int j=0,flag;
   
   
   //搜尋到"P=___mW"
   for(int p=0;p<1000;p++)buffer[p]='\0';
   flag=0;
   if(line[i]=='P' && line[i+1]=='='){ 
     enableP=1;
     for(j=i+2; (line[j]<='9'&&line[j]>='0')||line[j]=='.' ; j++){
    buffer[flag]=line[j];
    flag++;
  }
  double tmp = atof(buffer); 
  if(line[j]=='m')tmp/=1000;
  if(line[j]=='k')tmp*=1000;
  if(line[j]=='M')tmp*=1000000;
  P = tmp;
   }
   
   //搜尋到"U=___kV"
   for(int p=0;p<1000;p++)buffer[p]='\0';
   flag=0;
   if(line[i]=='U' && line[i+1]=='='){ 
     enableU=1;
     for(j=i+2; (line[j]<='9'&&line[j]>='0')||line[j]=='.' ; j++){
    buffer[flag]=line[j];
    flag++;
  }
  double tmp = atof(buffer); 
  if(line[j]=='m')tmp/=1000;
  if(line[j]=='k')tmp*=1000;
  if(line[j]=='M')tmp*=1000000;
  U = tmp;
   }
   
   //搜尋到"I=___MA"
   for(int p=0;p<1000;p++)buffer[p]='\0';
   flag=0;
   if(line[i]=='I' && line[i+1]=='='){ 
     enableI=1;
     for(j=i+2; (line[j]<='9'&&line[j]>='0')||line[j]=='.' ; j++){
    buffer[flag]=line[j];
    flag++;
  }
  double tmp = atof(buffer);
  if(line[j]=='m')tmp/=1000;
  if(line[j]=='k')tmp*=1000;
  if(line[j]=='M')tmp*=1000000;
  I = tmp;
   }
   
 }
 //printf("P=%.2f  U=%.2f  I=%.2f \n", P, U, I);
 
 if(enableP==0)printf("P=%.2fW\n", U*I);
 if(enableU==0)printf("U=%.2fV\n", P/I);
 if(enableI==0)printf("I=%.2fA\n", P/U);
 //for(int i=0;line[i];i++)printf("%c",line[i]);
 
 printf("\n");
  
  }
  return 0;
} 

沒有留言: