链接: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;

}