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; }
相关文章推荐
- Linux下进程信息的深入分析
- Django 数据库同步问题 -- 坑了好几天
- linux后端诊断与调试技术
- 一些好的学习iOS帖子
- 在view中常见的四种方法的使用场合
- 10 Color Inspiration Secrets Only Designers Know About
- 【C++】剑指Offer上的题目1-9
- datatable by Ajax 前端参数详解
- JavaScript——DOM Level0和DOM Level2事件模型
- Bitmap Image Graphics
- 2010年下半年软件评测师(下午)试题分析与解答-2
- android R文件Syntax error on token "int", VariableDeclaratorId expected after this token
- 如何让Linux下非root用户程序使用小于1024端口
- Android版本升级同时Sqlite数据库的升级及之前数据的保留 (
- [剑指offer]8.重建二叉树
- IOS之Foundation之探究学习Swift实用基础整理<一>
- 2010年下半年软件评测师(下午)试题分析与解答
- hbase shell无法使用退格键的解决方案
- 双查询注入
- AndroidJNI.SetObjectField 设置对象域