프로 그래 밍 제목: PAT 1024. 과학 계수 법 (20)
시간 제한
100 ms
메모리 제한
32000 kB
코드 길이 제한
8000 B
문제 풀이 절차
Standard
저자.
HOU, Qiming
과학 계수 법 은 과학자 들 이 크 거나 작은 숫자 를 나타 내 는 편리 한 방법 으로 정규 표현 식 [+ -] [1 - 9] 을 만족 시 키 는 것 이다.
현재 과학 계수 법의 형식 으로 실수 A 를 드 립 니 다. 프로그램 을 작성 하여 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하도록 하 십시오.
입력 형식:
각 입력 에는 과학 계수 법 으로 표 시 된 실수 A 를 포함 하 는 테스트 용례 가 1 개 씩 포함 되 어 있다.이 숫자의 저장 길 이 는 9999 바이트 를 초과 하지 않 고 지수의 절대 치 는 9999 를 초과 하지 않 는 다.
출력 형식:
모든 테스트 용례 에 대해 한 줄 에서 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하 며 끝의 0 을 포함 합 니 다.
입력 샘플 1:
+1.23400E-03
출력 예시 1:
0.00123400
입력 샘플 2:
-1.2E+10
출력 예시 2:
-12000000000
이 문 제 는 좀 서 툴 러 서 개인 적 으로 문자열 처 리 를 잘 하지 못 합 니 다.참고 코드 는 다음 과 같 습 니 다. 여기 서 몇 가 지 를 간략하게 제시 하고 string 작업 에 대한 익숙 함 을 주의 하 십시오. stringstream 에 대한 이해 (이 를 이용 하여 string 에서 int 로 의 전환 을 깨 웠 습 니 다).코드 논리 가 복잡 하지 않 으 니 보시 면 됩 니 다.
/*
http://pat.zju.edu.cn/contests/pat-b-practise/1024
*/
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int stringToint(const string &S)// stringstream string int
{
stringstream ss;
int result;
ss << S;
ss >> result;
return result;
}
int main()
{
string str,num;
int exp;
cin >> str;
char sign = str[0];//
int LocE = str.find('E');// E
num = str[1];
num += str.substr(3,LocE - 3);//
exp = stringToint(str.substr(LocE+1));
/////
if(sign == '-')
cout<<"-";
//
if(exp<0)// 0
{
cout<<"0.";
for(int i = 0;i<-exp-1;i++)
cout<<'0';
cout<<num;
}
else if(exp>=num.length()-1)// 0,
{
cout<<num;
for(int i = 0;i<exp-num.length()+1;i++)
cout<<'0';
}
else //
{
cout<<num.substr(0,exp+1);
cout<<".";
cout<<num.substr(exp+1);
}
system("pause");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PAT 01-2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.