UVA 537 人工智能
2012-08-18 18:10
351 查看
要点:
从字符串或者字符数组中读取 小数
采用sscanf可以实现 sscanf(const char *, format, &)
再贴一个
采用C++ isringstream 的方法,也比较好
从字符串或者字符数组中读取 小数
采用sscanf可以实现 sscanf(const char *, format, &)
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <string> using namespace std; /// #define INF 0xffffff7 #define MAXN 200 char problem[MAXN]; char pp[MAXN]; char uu[MAXN]; char II[MAXN]; double prefix[] = {0.001, 1000, 1000000}; double P, U, I; void readin(char num[], int pos) { int i, j; j = 0; for (i = pos; problem[i] != 'W' && problem[i] != 'A' && problem[i] != 'V'; i++) { num[j++] = problem[i]; } } double transfer(char num[]) { int i, j; double mul = 1; double temp; int len = strlen(num); if (num[len - 1] == 'm') { mul = prefix[0]; num[len - 1] = '\0'; } else if (num[len - 1] == 'k') { mul = prefix[1]; num[len - 1] = '\0'; } else if (num[len - 1] == 'M') { mul = prefix[2]; num[len - 1] = '\0'; } sscanf(num, "%lf", &temp); temp *= mul; return temp; } int main() { /// int i, j, th; int nCases; scanf("%d", &nCases); getchar(); th = 1; while (nCases--) { memset(pp, 0, sizeof(pp)); memset(uu, 0, sizeof(uu)); memset(II, 0, sizeof(II)); gets(problem); int len = strlen(problem); P = U = I = 0; for (i = 0; i < len; i++) { if (problem[i] == '=') { switch(problem[i - 1]) { case 'P': readin(pp, i + 1); break; case 'U': readin(uu, i + 1); break; case 'I': readin(II, i + 1); break; } } } printf("Problem #%d\n", th); if (strlen(pp) == 0) { U = transfer(uu); I = transfer(II); P = U * I; printf("P=%.2lfW\n", P); } else if (strlen(uu) == 0) { P = transfer(pp); I = transfer(II); U = P / I; printf("U=%.2lfV\n", U); } else if (strlen(II) == 0) { P = transfer(pp); U = transfer(uu); I = P / U; printf("I=%.2lfA\n", I); } printf("\n"); th++; } /// return 0; }
再贴一个
采用C++ isringstream 的方法,也比较好
#include<iostream> #include<sstream> #include<string> #include<cstdio> using namespace std; int main() { /* freopen("data.in","r",stdin); freopen("data.out","w",stdout); //*/ int T; cin>>T;getchar(); for(int case_num=1;case_num<=T;case_num++) { string line; getline(cin,line); double P(-1.0),U(-1.0),I(-1.0); istringstream sin(line); char ch; while(sin>>ch) { if(ch=='P') { char t; sin>>t; if(t!='=') continue; sin>>P; sin>>t; if(t=='m') P/=1000; else if(t=='k') P*=1000; else if(t=='M') P*=1000000; } else if(ch=='U') { char t; sin>>t; if(t!='=') continue; sin>>U; sin>>t; if(t=='m') U/=1000; else if(t=='k') U*=1000; else if(t=='M') U*=1000000; } else if(ch=='I') { char t; sin>>t; if(t!='=') continue; sin>>I; sin>>t; if(t=='m') I/=1000; else if(t=='k') I*=1000; else if(t=='M') I*=1000000; } } cout<<"Problem #"<<case_num<<endl; if(P==-1.0) printf("P=%.2fW\n",U*I); else if(U==-1.0) printf("U=%.2fV\n",P/I); else printf("I=%.2fA\n",P/U); printf("\n"); } return 0; }
相关文章推荐
- UVa OJ 537 人工智能
- UVa 537 人工智能
- uva 537 人工智能
- UVA - 537 - Artificial Intelligence
- UVa537 - Artificial Intelligence?
- UVa-537-Artificial Intelligence?
- uva 537 - Artificial Intelligence?
- UVa537 - Artificial Intelligence?-字符串(混合字符实数输入)-难度3
- UVA 537 (暑假-字符串(1) -D - Artificial Intelligence?)
- uva537字符串中小数转化为实际小数
- UVa-537
- UVA-537 - Artificial Intelligence?
- uva 537
- UVA537 - Artificial Intelligence?
- UVA 537 Artificial Intelligence?
- UVa 537 - Artificial Intelligence?
- UVa 537 - Artificial Intelligence?
- UVa 537 - Artificial Intelligence?
- uva 537(字符串)
- UVA - 537 Artificial Intelligence?