您的位置:首页 > 其它

uva537字符串中小数转化为实际小数

2015-07-20 11:37 489 查看
这题看了别人写的认为没有我写的严谨,至于小数转化,可以使用俩个循环进行转化,也可以用一个循环加标记

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cctype>
#include<string>
#include<map>
#include<set>
#include<cmath>
#include<vector>
#include<queue>
#include<stack>
using namespace std;
char s[1005];
double findnum(int i)
{
int flag=1;
double num=0;
if(s[i+2]=='-')
{
flag=-1;
i=i+3;
}
else
i=i+2;
//   cout<<i<<endl;
int fla=0;
int cc=1;
for(;i<strlen(s);i++)
{
if(isdigit(s[i]))
{
num=num*10+(s[i]-'0');
if(fla)
cc*=10;
}
else if(s[i]=='.')
fla=1;
else
break;
}
num=num/cc;
//  cout<<i<<endl;
//cout<<num<<endl;
if(s[i]=='m')
num=num/1000;
if(s[i]=='k')
num=num*1000;
if(s[i]=='M')
num=num*1000000;
// cout<<num<<endl;
return num*flag;

}
int main()
{
int t;
int k=0;
cin>>t;
getchar();
while(t--)
{
gets(s);
double p,u,ii;
int tem1=0,tem2=0,tem3=0;
for(int i=0;i<strlen(s);i++)
{
if(s[i]=='P'&&s[i+1]=='=')
{
tem1=1;
p=findnum(i);
}
if(s[i]=='U'&&s[i+1]=='=')
{
tem2=1;
u=findnum(i);
}
if(s[i]=='I'&&s[i+1]=='=')
{
tem3=1;
ii=findnum(i);
// cout<<ii<<endl;
}
}
cout<<"Problem #"<<++k<<endl;
if(!tem1)
printf("P=%.2fW\n",u*ii);
else if(!tem2)
printf("U=%.2fV\n",p/ii);
else
printf("I=%.2fA\n",p/u);
cout<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: