PAT 1024 과학 계수 법 (20)

5055 단어 pat
과학 계수 법 은 과학자 들 이 매우 크 거나 작은 숫자 를 나타 내 는 편리 한 방법 으로 정규 표현 식 [+ -] [1 - 9] 을 만족 시 키 는 것 이다. "[0 - 9] + E [+ -] [0 - 9] +, 즉 숫자의 정수 부분 은 1 자리 에 불과 하고 소수 부분 은 적어도 1 자리 가 있 으 며 이 숫자 와 지수 부분의 양음 호 는 양수 에 대해 서도 반드시 명확 하 게 제시 해 야 한다.
현재 과학 계수 법의 형식 으로 실수 A 를 드 립 니 다. 프로그램 을 작성 하여 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하도록 하 십시오.
입력 형식:
각 입력 에는 과학 계수 법 으로 표 시 된 실수 A 를 포함 하 는 테스트 용례 가 1 개 씩 포함 되 어 있다.이 숫자의 저장 길 이 는 9999 바이트 를 초과 하지 않 고 지수의 절대 치 는 9999 를 초과 하지 않 는 다.
출력 형식:
모든 테스트 용례 에 대해 한 줄 에서 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하 며 끝의 0 을 포함 합 니 다.입력 샘플 1: + 1.23400E - 03
수출 사례 1: 0.00123400
입력 샘플 2: - 1.2E + 10
출력 샘플 2: - 1200000000
string str = "-1.23400E+14";
    string a = "",tmp="";
    char b = ' ', c = ' ';
    int len = str.length();
    int j = 0;
    float num = 0.0;
    stringstream ss;
    int snum = 0;

    b = str[j];
    for (int i = 1; i < len; ++i){
        if (str[i] == 'E'){ j = i; break; }
        else{
            a.push_back(str[i]);
        }
    }
    cout << a << endl;
    tmp = a;
    ss << a;
    ss >> num;
    a.clear(); ss.clear();

    ++j;
    c = str[j];
    ++j;
    for (j; j < len; ++j){
        a.push_back(str[j]);
    }
    ss << a;
    ss >> snum;
    cout << snum<< endl;
    a.clear(); ss.clear();

    if (b == '-')cout << '-';

    if (snum == 0){
        cout << tmp;
    }

    if (c=='+'&&snum!=0){
        int loc = snum + 2;
        len = tmp.length();
        for (int i = 0; i < len; ++i){
            if (i == loc)cout << '.';
            if (tmp[i] == '.')continue;
            else cout << tmp[i];
        }
        int loc2 = loc - len;
        if (loc2 > 0){
            for (int i = 0; i < loc2; ++i){
                cout << '0';
            }
        }
    }
    else if (c=='-'&&snum!=0){
        cout << "0.";
        int loc = snum-1;
        len = tmp.length();
        for (int i = 0; i < loc; ++i){
            cout << '0';
        }
        for (int i = 0; i < len; ++i){
            if (tmp[i] == '.')continue;
            else cout << tmp[i];
        }
    }
    cout << endl;

좋은 웹페이지 즐겨찾기