链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=1011
简单题,..字符串查找
注意有有小数出现
#include <iostream>
#include <string>
#include <cstdlib>
#include <cstdio>
using namespace std;
string data;
int main()
{
double translate(string tem);
string tem;
int t;
int i=1;
double power,vol,cur; //功率,电压,电流.
cin>>t;
getchar();
while(t--)
{
getline(cin,data);
//cout<<data<<endl;
power=translate("P=");
vol=translate("U=");
cur=translate("I=");
cout<<"Problem #"<<i<<endl;
if(cur==0)
printf("I=%.2lfA\n",power/vol);
if(vol==0)
printf("U=%.2lfV\n",power/cur);
if(power==0)
printf("P=%.2lfW\n",cur*vol);
cout<<endl;
i++;
}
return 0;
}
double translate(string tem)
{
int first;
double ans;
first=data.find(tem,0);
tem.clear();
if (first!=string::npos)
{
first+=2;
while(data[first]>='0'&&data[first]<='9')
{
tem+=data[first];
first++;
if(data[first]=='.')
{
tem+=data[first];
first++;
}
}
ans=atof(tem.c_str());
if(data[first]=='m')
ans/=1000;
if(data[first]=='k')
ans*=1000;
if (data[first]=='M')
ans*=1000000;
}
else
ans=0;
return ans;
}