PAT 1073

来源:互联网 发布:网络直播视频 编辑:程序博客网 时间:2024/04/28 16:54

1073. Scientific Notation (20)

讲科学技术法转换成正常的数值表示法。
注意小数点在最后的情况即可,比如+1.2E+1,结果为12,而不是12.。

#include <string>#include <cstdio>#include <iostream>#include <algorithm>using namespace std;string linetonum(const string &line);int main(){        string line;        cin >> line;        cout << linetonum(line) << endl;        return 0;}string linetonum(const string &line){        string exp(line, line.find('E')+1, line.length()), number(line, 1, line.find('E')-1);        int numexp = atoi(exp.c_str());        if (numexp > 0)        {                while(numexp--)                {                        size_t ppos(number.find('.'));                        if (ppos == string::npos)                        {                                number += '0';                        }                        else                        {                                number[ppos] = number[ppos+1];                                number[ppos+1] = '.';                                if (number.find('.') == number.length() - 1)                                {                                        number.erase(number.find('.'));                                }                        }                }        }        else        {                while(numexp ++)                {                        size_t ppos(number.find('.'));                        number[ppos] = number[0];                        number[0] = '.';                        number = "0" + number;                }        }        if (line[0] == '-')        {                number = "-" + number;        }        return number;}


0 0