[PAT (Basic Level)] 1024 과학 계수 법 (20 점)

12008 단어 PAT
과학 계수 법 은 과학자 들 이 매우 크 거나 작은 숫자 를 나타 내 는 편리 한 방법 으로 정규 표현 식 [±] [1 - 9] 를 만족 시 키 는 것 이다.
현재 과학 계수 법의 형식 으로 실수 A 를 드 립 니 다. 프로그램 을 작성 하여 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하도록 하 십시오.
[입력 형식]: 각 입력 은 테스트 용례 1 개, 즉 과학 계수 법 으로 표 시 된 실수 A 를 포함 합 니 다.이 숫자의 저장 길 이 는 9999 바이트 를 초과 하지 않 고 지수의 절대 치 는 9999 를 초과 하지 않 는 다.
[출력 형식]: 모든 테스트 용례 에 대해 한 줄 에서 일반 숫자 표현법 에 따라 A 를 출력 하고 모든 유효한 위치 가 보 존 됩 니 다. 끝의 0 을 포함 합 니 다.
【 샘플 1 입력 】:
+1.23400E-03
[출력 예시 1]:
0.00123400
【 샘플 2 입력 】:
-1.2E+10
[출력 예시 2]:
-12000000000
[조심 하 세 요]:
  • 우선 E 의 위 치 를 찾 아야 한다
  • E 뒤의 지 수 는 0
  • 일 수 있다.
  • E 뒤에 + 번호 가 있 을 때 지수 가 소수 자리수 보다 적 을 수도 있 고 소수 자리수 보다 클 수도 있 으 며 소수 자리수 와 같 을 수도 있 으 므 로 소수점 을 출력 할 때 주의해 야 한다
  • [AC 코드]:
    #include 
    #include 
    
    using namespace std;
    
    int main()
    {
    	string s;
    	cin >> s;
    	int i = 0, j;
    	int sum = 0;
    	for (i = 0; i < s.length(); i++)
    	{
    		if (s[i] == 'E')
    		{
    			for (j = i + 2; j < s.length(); j++)
    			{
    				sum = sum * 10 + (s[j] - '0');
    			}
    			if (s[0] == '-')
    			{
    				cout << '-';
    			}
    			if (sum == 0)//   0,    
    			{
    				for (j = 1; j < i; j++)
    				{
    					cout << s[j];
    				}
    			}
    			else//    0
    			{
    				if (s[i + 1] == '+')//    ,  
    				{
    					cout << s[1];
    					if (sum < i - 3)//        ,i-3        
    					{
    						for (j = 3; j < 3 + sum; j++)
    						{
    							cout << s[j];
    						}
    						cout << ".";
    						for (j = 3 + sum; j < i; j++)
    						{
    							cout << s[j];
    						}
    					}
    					else//          
    					{
    						for (j = 3; j < i; j++)
    						{
    							cout << s[j];
    						}
    						for (j = 1; j <= sum - (i - 3); j++)
    						{
    							cout << '0';
    						}
    					}
    				}
    				else//    ,  
    				{
    					cout << "0.";
    					for (j = 1; j < sum; j++)
    					{
    						cout << '0';
    					}
    					cout << s[1];
    					for (j = 3; j < i; j++)
    					{
    						cout << s[j];
    					}
    				}
    			}
    			return 0;
    		}
    	}
    	return 0;
    }
    

    좋은 웹페이지 즐겨찾기